『壹』 python中怎樣將文件拷貝到指定的目錄下
代碼:
import os
import shutil
from shutil import Error
from shutil import stat
from shutil import 2
src = "" #需要復制的文件目錄
dst = "" #目標目錄
def jiecptree(src, dst, symlinks=False, ignore=None): #聲明函數 ree( 要復制的目錄,目標目錄,復制符號連接內容到新目錄,沒有要忽略文件)
names = os.listdir(src) #獲得要復制目錄的文件名列表,賦給變數 names
if ignore is not None: #如果 ignore 不是None值
ignored_names = ignore(src, names) # src目錄中要忽略文件的名字賦給 ignored_names
else: # 否則
ignored_names = set() #ignore_name 被 不重復空元素集 賦值
if os.path.isdir(dst):
pass
else:
os.makedirs(dst)
# print"dstfirst:"+dst
errors = [] #聲明 errors列
for name in names: #將names里的元素循環復制給name
if name in ignored_names: #如果name在要求被忽略的列里出現
continue #繼續for循環(跳回for,從新循環下個元素)
srcname = os.path.join(src, name) #將路徑名(src)添加到文名(name)之前然後賦值給 srcname
dstname = os.path.join(dst, name) #將路徑名(dst)添加到文名(name)之前然後賦值給 dstcname
from shutil import Error
# print "name:"+name
# print "src:"+src
# print "dst:"+dst
try: #嘗試
if os.path.islink(srcname):
continue
elif os.path.isdir(srcname): #如果srcname路徑是存在
jiecptree(srcname, dstname, symlinks, ignore)
elif os.path.isdir(dstname):
os.remove(dstname)
2(srcname, dstname)
else: # 否則
2(srcname, dstname) # 復制srcname到dstname
# print "srcname:"+srcname
# print "dstname:"+dstname
# XXX What about devices, sockets etc.? #怎樣裝置
except (IOError, os.error), why: #除(IOError[與文件有關的異常],操作系統異常)外,返回原因
errors.append((srcname, dstname, str(why))) # 向errors列里添加,(要復制的目錄,目標目錄,錯誤原因)
# catch the Error from the recursive jiecptree so that we can 從遞歸復制中捕捉這個錯誤,以便於我們能繼續復制其他文件
# continue with other files
except Error, err: #除錯誤外,返回錯誤:
errors.extend(err.args[0]) #擴展 errors 列,添加(err.args[0] 元素)
try: #嘗試
stat(src, dst) # 從src復制許可權位,上次訪問時間,最後修改時間 到 dst,
except WindowsError: # 除 Windows錯誤 外:
# can't file access times on Windows 在Windows上無法復制文件訪問時間
pass # 通過(不作任何處理)
except OSError, why: # 除 操作系統錯誤 外,返回原因:
errors.extend((src, dst, str(why))) #擴展 errors 列,添加(要復制的目錄,目標目錄,錯誤原因)
if errors: # 如果錯誤
raise Error(errors) # 提示錯誤
更多相關內容可參考資料http://www.viiboo.cn
『貳』 python--目錄操作
一、os.getcwd()
獲取當前工作目錄,即當前Python腳本工作的目錄路徑。
二、os. chdir(path)
改變當前腳本工作目錄;相當於shell下的cd命令。
三、os.pardir
返回當前目錄的父目錄('..')
四、獲取當前使用的操作系統類型(其中 『nt』 是 windows,』posix』 是linux 或者 unix)。
五、os.mkdir(path [, mode=0777])
生成單級目錄;相當於linux中的mkdir dirname。參數mode表示生成的目錄的許可權,默認是超級許可權,也就是0777。如果重復創建,會報錯
六、os.makedirs(path [, mode=0777])
可生成多層遞歸目錄,父目錄如果不存在,遞歸生成。參數mode表示生成的目錄的許可權,默認是超級許可權,也就是0777。
七、os.removedirs(path)
若目錄為空,則刪除,並遞歸到上一級目錄,如若也為空,則刪除,依次類推。
八、os.rmdir(path)
刪除單級空目錄,若目錄不為空則無法刪除,會報錯;相當Linux中的rmdir dirname。
九、os.listdir(path)
列出指定目錄下的所有文件和子目錄,包括隱藏文件或目錄,並以列表形式返回。
十、os.remove(filePath)
刪除一個指定的文件,參數filePath表示文件所在的路徑。
注意:該方法只能刪除文件,不能刪除目錄。
十一、os.rename(oldname, newname)
重命名文件/目錄。
十二、os.access(path, mode)
輸出文件許可權模式。
十三、os.chmod(path, mode)
修改文件的許可權。
十四、os.walk(top, topdown=True, onerror=None, followlinks=False)
➢top:表示需要遍歷的目錄樹的路徑。
➢topdown的默認值是「True」,表示首先返回目錄樹下的文件,然後遍歷目錄樹下的子目錄。值設為False時,則表示先遍歷目錄樹下的子目錄,返回子目錄下的文件,最後返回根目錄下的文件。
➢onerror的默認值是「None」,表示忽略文件遍歷時產生的錯誤。如果不為空,則提供一個自定義函數提示錯誤信息後繼續遍歷或拋出異常中止遍歷。
➢該函數返回一個列表,列表中的每一個元素都是一個元組,該元組有3個元素,分別表示每次遍歷的路徑名,目錄列表和文件列表。
➢默認情況下,os.walk 不會遍歷軟鏈接指向的子目錄,若有需要請將followlinks設定為true
十五、os.path.split(path)
將path分割成目錄和文件名(事實上,如果你完全使用目錄,它也會將最後一個目錄作為文件名而分離,同時它不會判斷文件或目錄是否存在),並存於元組中返回。
十六、os.path.exists(path)
判斷path是否存在,如果存在返回True,否則返回False。
十七、os.path.isfile(path)
判斷path是否是文件,如果是返回True,否則返回False。
十八、os.path.isdir(path)
判斷path是否是目錄,如果是目錄返回True,否則返回False。
十九、os.path.getsize(name)
獲得文件大小,如果name是目錄返回結果是0L或者4096L;如果name代表的目錄或文件不存在,則會報WindowsError異常。
二十、os.path.join(a, *p)
連接兩個或更多的路徑名,中間以「\」分隔,如果所給的參數中都是絕對路徑名,那先給的絕對路徑將會被丟棄。
二十一、os.path.getatime(filename)
返迴文件的最後訪問時間,返回的是時間戳。
二十二、os.path.getctime(filename)
以時間戳的形式返迴文件或目錄的創建時間,在Unix系統上是文件最近更改的時間,在Windows上是文件或目錄的創建時間。
1.基礎題:
檢驗給出的路徑是否是一個文件:os.path.isfile("D:\\test.txt")
檢驗給出的路徑是否是一個目錄:os.path.isdir("D:\\test.txt")
判斷是否是絕對路徑:os.path.isabs("D:\\test.txt")
檢驗給出的路徑是否真地存在:
2.返回一個路徑的目錄名和文件名 :os.listdir("D:\\")
3.分離文件名與擴展名 :os.path.splitext("D:\\test.txt")
4.找出某個目錄下所有的文件,並在每個文件中寫入「gloryroad」 :
>>> for files in os.walk("D:\\test"):
... print(files)
...
('D:\\test', [], ['a.txt', 'b.txt', 'test.txt', 'test1.txt'])
>>> with open("D:\\test\\a.txt","w+") as f:
... f.write("gloryroad")
5.如果某個目錄下文件名包含txt後綴名,則把文件後面追加寫一行「被我找到了!」
6. 命題練習:
1) 一個目錄下只有文件(自己構造),拷貝幾個文件(手工完成)
2 )用listdir函數獲取所有文件,如果文件的創建時間是今天,那麼就在文件裡面寫上文件的路徑、文件名和文件擴展名
3) 如果不是今天創建(獲取文件的創建時間,並轉化為時間格式,判斷是否今天),請刪除
4 )計算一下這個程序的執行耗時
7.刪除某個目錄下的全部文件
8.統計某個目錄下文件數和目錄個數
9.使用程序建立一個多級的目錄,在每個目錄下,新建一個和目錄名字一樣的txt文件
10. 查找某個目錄下是否存在某個文件名
11. 用系統命令拷貝文件
12.輸入源文件所在路徑和目標目錄路徑,然後實現文件拷貝功能
13.遍歷某個目錄下的所有圖片,並在圖片名稱後面增加
14、遍歷指定目錄下的所有文件,找出其中佔用空間最大的前3個文件
15、過濾py源碼中的#注釋,另存為文件result.py,並執行result.py,斷言是否執行成功
16、文件訪問,提示輸入數字 N 和文件 F, 然後顯示文件 F 的前 N 行.
17、從命令行接受1個路徑如:c:\a\b\c\1.py, 實現1個函數創建目錄a\b\c,創建文件1.py,實現1個函數刪除已創建的目錄及文件
18、有一個ip.txt,裡面每行是一個ip,實現一個函數,ping 每個ip的結果,把結果記錄存到ping.txt中,格式為ip:0或ip:1 ,0代表ping成功,1代表ping失敗
19、實現DOS命令執行功能,接受輸入命令並執行,然後把執行結果和返回碼列印到屏幕
20、文件訪問
訪問一存在多行的文件,實現每隔一秒逐行顯示文本內容的程序,每次顯示文本文件的 5行, 暫停並向用戶提示「輸入任意字元繼續」,按回車鍵後繼續執行,直到文件末尾。
顯示文件的格式為:[當前時間] 一行內容,比如:[2016-07-08 22:21:51] 999370this is test
『叄』 Python中如何遍歷指定目錄下的所有文件
例如:在C:\TDDOWNLOAD目錄下有a.txt、b.txt兩個文件,另有\sub1子文件夾,C:\TDDOWNLOAD\sub1下又有c.txt、d.txt兩個文件。
1.
os.walk
os.walk()返回一個三元素的tuple:當前路徑、子文件夾名稱、文件列表。>>>
import
os>>>
def
fun(
path
):...
for
root,
dirs,
files
in
os.walk(
path
):...
for
fn
in
files:...
print
root,
fn...
>>>
fun(
r'C:\TDDOWNLOAD'
)C:\TDDOWNLOAD
a.txtC:\TDDOWNLOAD
b.txtC:\TDDOWNLOAD\sub1
c.txtC:\TDDOWNLOAD\sub1
d.txt>>>
2.
glob.glob
glob.glob()只接受一個參數,這個參數既代有路徑,又代有匹配模式,返回值為一個列表。注意,glob.glob()無法直接穿透子文件夾,需要自己處理:>>>
def
fun(
path
):...
for
fn
in
glob.glob(
path
+
os.sep
+
'*'
):
#
'*'代表匹配所有文件...
if
os.path.isdir(
fn
):
#
如果結果為文件夾...
fun(
fn
)
#
遞歸...
else:...
print
fn...
>>>
fun(
r'C:\TDDOWNLOAD'
)C:\TDDOWNLOAD\a.txtC:\TDDOWNLOAD\b.txtC:\TDDOWNLOAD\sub1\c.txtC:\TDDOWNLOAD\sub1\d.txt>>>
'*'為匹配模式,代表匹配所有文件,只有這樣才能將子文件夾查出來,以便遞歸深入,探查下一層的文件。
『肆』 用Python讀入規定目錄下的txt文件中的部分內容
# filename: test.py
import os
users = [] # 用來保存從文件中讀取的數據
for item in os.listdir('.'): # 遍歷指定目錄
if os.path.isfile(item) and item.endswith('.txt'): # 判斷是否為.txt文件
f = open(item) # 打開文件
for line in f: # 讀入文件的每一行
if line.startswith('用戶名'): # 變數初始化
uid = age = sex = None
elif line.startswith("用戶id"): # 根據每行開始內容獲取數據
uid = line.split()[1]
elif line.startswith("年齡"):
age = line.split()[1]
elif line.startswith("性別"):
sex = line.split()[1]
users.append([uid, age, sex]) # 將所獲得的數據以列表的形式追加到數組中
f.close() # 關閉文件
print(users) # 列印數組內容
# [['12345', '23', '男'], ['12346', '23', '男'], ['12347', '23', '男'], ['12348', '23', '男']]
使用的數據文件:
1.txt
------------
用戶名 abc
------------
用戶id 12345
年齡 23
性別 男
------------
用戶名 小張
------------
用戶id 12346
年齡 23
性別 男
2.txt
------------
用戶名 張三
------------
用戶id 12347
年齡 23
性別 男
------------
用戶名 李四
------------
用戶id 12348
年齡 23
性別 男
『伍』 python中怎樣將文件拷貝到指定的目錄下
用readline
inputFile = open("inputFile.txt", "r")
print "Name of the input file: ", inputFile.name;
outputFile = open("outputFile.txt", "a");
print "Name of the output file: ", outputFile.name;
allLines = inputFile.readlines();
for eachLine in allLines:
print "current line content: %s" % (eachLine);
#append into output file
outputFile.write(eachLine);
inputFile.close();
outputFile.close();
『陸』 怎麼在Python進入指定文件夾
importos
os.chdir(r'D:Pythonwork')#進入指定的目錄
importrunpy
runpy.run_path('hello.py')#運行hello.py文件