本模組主要提供了一些對檔案和多個檔案的高階操作,比如檔案的拷貝功能、檔案的刪除功能。如果只是想對乙個檔案進行操作,使用os
模組操作就可以了。不過要值得注意的一點是本模組裡拷貝檔案和刪除檔案,在有一些情況下系統的元資料沒有辦法拷貝和刪除。
shutil.copyfileobj(fsrc, fdst[, length])
拷貝檔案類似的物件fsrc
的內容到目標物件
fdst
。引數length
是指明緩衝區的大小,如果是負數表示整個檔案讀取;預設值是讀取一塊磁碟大小的資料,不會占用太多記憶體。如果對檔案物件操作完成之後,再想從頭讀取檔案物件,需要調整檔案物件的位置指標。
例子:#python 3.4
import shutil
src = 'f:\\temp\\py\\codecs1.py'
dst = 'f:\\temp\\py\\test888.py'
with open(src, 'rb') as fsrc:
with open(dst, 'wb') as fdst:
shutil.copyfileobj(fsrc, fdst, 100)
shutil.copyfile(src, dst, *, follow_symlinks=true)
拷貝檔名稱為src
的內容到檔案
dst,返回
dst檔案路徑。
例子:#python 3.4
import shutil
src = 'f:\\temp\\py\\codecs1.py'
dst = 'f:\\temp\\py\\test888.py'
print(shutil.copyfile(src, dst))
結果輸出如下:
f:\temp\py\test888.py
exception shutil.samefileerror
當呼叫函式copyfile()
時,如果原始檔與目標檔案一樣時,就會丟擲這個異常。
shutil.copymode(src, dst, *, follow_symlinks=true)
拷貝檔案的許可權位,不影響檔案的內容、擁有關係和組關係。
shutil.copystat(src, dst, *, follow_symlinks=true)
拷貝檔案的許可權位、最後訪問時間、最後修改時間和標誌,不影響檔案的內容、擁有關係和組關係。
shutil.copy(src, dst, *, follow_symlinks=true)
拷貝檔案src
到檔案或者目錄
dst。如果
dst是目錄,拷貝檔案到目錄裡面。引數
follow_symlinks
為false
,表示如果原始檔是乙個符號連線,目標也拷貝乙個符號連線;如果為
true
,即使原始檔是乙個符號連線,也會拷貝原始檔。
例子:#python 3.4
import shutil
src = 'f:\\temp\\py\\codecs1.py'
dst = 'f:\\temp\\py\\dir1'
print(shutil.copy(src, dst))
結果輸出如下:
f:\temp\py\dir1\codecs1.py
shutil.copy2(src, dst, *, follow_symlinks=true)
與copy
函式一樣的功能,只不過它會盡量拷貝所有檔案相關的元資料。
shutil.ignore_patterns(*patterns)
用來建立乙個忽略引數ignore
,以便copytree()
函式遍歷檔案時可以忽略的引數、檔案和目錄。
shutil.copytree(src, dst, symlinks=false, ignore=none, copy_function=copy2, ignore_dangling_symlinks=false)
遞迴地完全地拷貝乙個目錄到另外乙個目錄。
例子:#python 3.4
import shutil
src = 'f:\\temp\\py\\dir1'
dst = 'f:\\temp\\py\\dir2\\1'
print(shutil.copytree(src, dst))
結果輸出如下:
f:\temp\py\dir2\1
shutil.rmtree(path, ignore_errors=false, οnerrοr=none)
刪除整個目錄樹,路徑必須是乙個目錄而不能是乙個符號連線。引數ignore_errors
設定為true
時,會忽略發生的錯誤;如果設定為
false
時,當錯誤發生就會呼叫
onerrro
錯誤處理函式。
shutil.move(src, dst)
遞迴地移動乙個檔案或目錄到另外目錄位置。
例子:#python 3.4
import shutil
src = 'f:\\temp\\py\\dir2\\1'
dst = 'f:\\temp\\py\\dir1\\2'
print(shutil.move(src, dst))
結果輸出如下:
f:\temp\py\dir1\2
shutil.disk_usage(path)
返回磁碟的使用統計情況,以命名元組形式:(總數,已經使用,可用),單位為位元組。
例子:#python 3.4
import shutil
print(shutil.disk_usage('f:\\'))
結果輸出如下:
usage(total=107373154304, used=93544562688, free=13828591616)
shutil.chown(path, user=none, group=none)
使用乙個路徑的擁有者和組關係。
shutil.which(cmd, mode=os.f_ok | os.x_ok, path=none)
返回路徑cmd
裡可執行檔案的路徑。
例子:#python 3.4
import shutil
print(shutil.which('python'))
結果輸出如下:
c:\python34\python.exe
python之高階的檔案操作shutil模組
shutil high level file operations 高階的檔案操作模組os模組提供了對目錄或者檔案的新建 刪除 檢視檔案屬性,還提供了對檔案以及目錄的路徑操作。比如說 絕對路徑,父目錄 但是,os檔案的操作還應該包含移動 複製 打包 壓縮 解壓等操作,這些os模組都沒有提供。而本章所...
Python檔案操作模組shutil
shutil.copyfileobj fsrc,fdst length import shutil f1 open 1.txt r encoding utf 8 f2 open 2.txt w encoding utf 8 shutil.copyfileobj f1,f2 f1.close f2.c...
shutil模組操作檔案
shutil 或稱為 shell 工具 模組中包含一些函式,讓你在 python 程式中複製 移動 改名和刪除檔案 import os import shutil cwd os.getcwd def copy 複製乙個檔案,返回被複製檔案的新名字 os.makedirs os.path.join c...