python shutil 高階檔案操作

2022-04-09 03:46:47 字數 2653 閱讀 8553

shutil模組提供了大量的檔案的高階操作。特別針對檔案拷貝和刪除,主要功能為目錄和檔案操作以及壓縮操作。對單個檔案的操作也可參見os模組。

shutil.copyfile(src, dst):複製檔案內容(不包含元資料)從src到dst。 dst必須是完整的目標檔名;拷貝目錄參見shutil.copy()。如果src和dst是同一檔案,就會引發錯誤shutil.error。dst必須是可寫的,否則將引發異常ioerror。如果dst已經存在,它會被替換。特殊檔案,例如字元或塊裝置和管道不能使用此功能,因為copyfile會開啟並閱讀檔案。 src和dst的是字串形式的路徑名。

shutil.copyfile("

shutil_copyfile.py

","shutil_copyfile.py.copy

")

copyfile()呼叫了底函式層copyfileobj()。

shutil.copyfileobj(fsrc, fdst[, length]):複製檔案內容(不包含元資料)從類檔案物件src到類檔案對dst。可選引數length指定緩衝區的大小,負數表示一次性讀入。缺省會把資料切分成小塊拷貝,以免占用太多記憶體。注意:拷貝是從fsrc的當前檔案開始。

copyfileobj(fsrc, fdst, length=16*1024)

shutil.copy(src, dst):複製檔案src到檔案或目錄dst。如果dst是目錄,使用src相同的檔名建立(或覆蓋),許可權位也會複製。src和dst的是字串形式的路徑名。

1

defcopy(src, dst):

2"""

copy data and mode bits ("cp src dst").34

the destination may be a directory.56

"""7

ifos.path.isdir(dst):

8 dst =os.path.join(dst, os.path.basename(src))

9copyfile(src, dst)

10 copymode(src, dst)

shutil.copy2(src, dst): 類似shutil.copy,元資料也複製,實際上先呼叫shutil.copy,然後使用copystat。這類似於unix命令cp -p。

def

copy2(src, dst):

"""copy data and all stat info ("cp -p src dst").

the destination may be a directory.

"""if

os.path.isdir(dst):

dst =os.path.join(dst, os.path.basename(src))

copyfile(src, dst)

copystat(src, dst)

當由unix下建立檔案預設基於umask設定許可權,copymode()可以複製許可權。

shutil.copymode(src, dst):從src複製許可權位到dst。該檔案的內容,所有者和組不受影響。src和dst的是字串形式的路徑名。

copymode('

shutil_copymode.py

', '

file_to_change.txt

')

要想拷貝檔案時間戳,需要copystat。

shutil.copystat(src, dst): 從src複製許可權位,最後訪問時間,最後修改時間,flag到dst。該檔案的內容,所有者和組不受影響。 src和dst的是給定的字串路徑名。

opystat('

shutil_copystat.py

', '

file_to_change.txt

')

2.7以後的版本提供了壓縮和解壓功能。

格式:shutil.make_archive(base_name, format[, root_dir[, base_dir, verbose, dry_run, owner, group, logger])

base_name: 壓縮包的檔名,也可以是壓縮包的路徑。只是檔名時,則儲存至當前目錄,否則儲存至指定路徑,

format: 壓縮包種類,「zip」, 「tar」, 「bztar」,「gztar」

root_dir: 要壓縮的資料夾路徑(預設當前目錄)

owner: 使用者,預設當前使用者

group: 組,預設當前組

logger: 用於記錄日誌,通常是logging.logger物件

ret = shutil.make_archive("

backup

","tar

",root_dir="

/home/www/

") #將/home/www目錄下的檔案進行備份,生成backup.tar的檔案,其中tar為壓縮包的字尾,www為壓縮包檔名

指定目錄備份:

>>> shutil.make_archive("/tmp/backup","tar",root_dir="/usr/local/python35")

'/tmp/backup.tar'

參考文件:

python shutil 高階檔案操作

shutil模組提供了大量的檔案的高階操作。特別針對檔案拷貝和刪除,主要功能為目錄和檔案操作以及壓縮操作。對單個檔案的操作也可參見os模組。shutil.copyfile src,dst 複製檔案內容 不包含元資料 從src到dst。dst必須是完整的目標檔名 拷貝目錄參見shutil.copy 如...

Python shutil模組用法

1.shutil.copyfile oldfile,newfile 複製檔案1到檔案2中,如txt檔案。注意 若檔案2不存在,則直接建立檔案2,且檔案2中內容和檔案1內容相同。若檔案2存在,則檔案2中原有內容會被清除掉。語法 shutil.copyfile oldfile,newfile impor...

shutil模組 python shutil模組

shutil.copyfile src,dst 從源src複製到dst中去。當然前提是目標位址是具備可寫許可權。丟擲的異常資訊為ioexception.如果當前的dst已存在的話就會被覆蓋掉 shutil.move src,dst 移動檔案或重新命名 shutil.copymode src,dst ...