您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何在Python中使用shutil標準庫,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
shutil模塊提供了許多關于文件和文件集合的高級操作,特別提供了支持文件復制和刪除的功能。
文件夾與文件操作
copyfileobj(fsrc, fdst, length=16*1024): 將fsrc文件內容復制至fdst文件,length為fsrc每次讀取的長度,用做緩沖區大小
fsrc: 源文件
fdst: 復制至fdst文件
length: 緩沖區大小,即fsrc每次讀取的長度
import shutil f1 = open("file.txt","r") f2 = open("file_copy.txt","a+") shutil.copyfileobj(f1,f2,length=1024)
copyfile(src, dst): 將src文件內容復制至dst文件
src: 源文件路徑
dst: 復制至dst文件,若dst文件不存在,將會生成一個dst文件;若存在將會被覆蓋
follow_symlinks:設置為True時,若src為軟連接,則當成文件復制;如果設置為False,復制軟連接。默認為True。Python3新增參數
import shutil shutil.copyfile("file.txt","file_copy.txt")
copymode(src, dst): 將src文件權限復制至dst文件。文件內容,所有者和組不受影響
src: 源文件路徑
dst: 將權限復制至dst文件,dst路徑必須是真實的路徑,并且文件必須存在,否則將會報文件找不到錯誤
follow_symlinks:設置為False時,src, dst皆為軟連接,可以復制軟連接權限,如果設置為True,則當成普通文件復制權限。默認為True。Python3新增參數
import shutil shutil.copymode("file.txt","file_copy.txt")
copystat(src, dst): 將權限,上次訪問時間,上次修改時間以及src的標志復制到dst。文件內容,所有者和組不受影響
src: 源文件路徑
dst: 將權限復制至dst文件,dst路徑必須是真實的路徑,并且文件必須存在,否則將會報文件找不到錯誤
follow_symlinks:設置為False時,src, dst皆為軟連接,可以復制軟連接權限、上次訪問時間,上次修改時間以及src的標志,如果設置為True,則當成普通文件復制權限。默認為True。Python3新增參數
import shutil shutil.copystat("file.txt","file_copy.txt")
copy(src, dst): 將文件src復制至dst。dst可以是個目錄,會在該目錄下創建與src同名的文件,若該目錄下存在同名文件,將會報錯提示已經存在同名文件。權限會被一并復制。本質是先后調用了copyfile與copymode而已
src:源文件路徑
dst:復制至dst文件夾或文件
follow_symlinks:設置為False時,src, dst皆為軟連接,可以復制軟連接權限,如果設置為True,則當成普通文件復制權限。默認為True。Python3新增參數
improt shutil,os shutil.copy("file.txt","file_copy.txt") # 或者 shutil.copy("file.txt",os.path.join(os.getcwd(),"copy"))
copy2(src, dst): 將文件src復制至dst。dst可以是個目錄,會在該目錄下創建與src同名的文件,若該目錄下存在同名文件,將會報錯提示已經存在同名文件。權限、上次訪問時間、上次修改時間和src的標志會一并復制至dst。本質是先后調用了copyfile與copystat方法而已
src:源文件路徑
dst:復制至dst文件夾或文件
follow_symlinks:設置為False時,src, dst皆為軟連接,可以復制軟連接權限、上次訪問時間,上次修改時間以及src的標志,如果設置為True,則當成普通文件復制權限。默認為True。Python3新增參數
improt shutil,os shutil.copy2("file.txt","file_copy.txt") # 或者 shutil.copy2("file.txt",os.path.join(os.getcwd(),"copy"))
ignore_patterns(*patterns): 忽略模式,用于配合copytree()
方法,傳遞文件將會被忽略,不會被拷貝
patterns:文件名稱,元組
copytree(src, dst, symlinks=False, ignore=None): 拷貝文檔樹,將src文件夾里的所有內容拷貝至dst文件夾
src:源文件夾
dst:復制至dst文件夾,該文件夾會自動創建,需保證此文件夾不存在,否則將報錯
symlinks:是否復制軟連接,True復制軟連接,False不復制,軟連接會被當成文件復制過來,默認False
ignore:忽略模式,可傳入ignore_patterns()
copy_function:拷貝文件的方式,可以傳入一個可執行的處理函數,默認為copy2,Python3新增參數
ignore_dangling_symlinks:sysmlinks設置為False時,拷貝指向文件已刪除的軟連接時,將會報錯,如果想消除這個異常,可以設置此值為True。默認為False,Python3新增參數
import shutil,os folder1 = os.path.join(os.getcwd(),"aaa") # bbb與ccc文件夾都可以不存在,會自動創建 folder2 = os.path.join(os.getcwd(),"bbb","ccc") # 將"abc.txt","bcd.txt"忽略,不復制 shutil.copytree(folder1,folder2,ignore=shutil.ignore_patterns("abc.txt","bcd.txt")
rmtree(path, ignore_errors=False, onerror=None): 移除文檔樹,將文件夾目錄刪除
ignore_errors:是否忽略錯誤,默認False
onerror:定義錯誤處理函數,需傳遞一個可執行的處理函數,該處理函數接收三個參數:函數、路徑和excinfo
import shutil,os folder1 = os.path.join(os.getcwd(),"aaa") shutil.rmtree(folder1)
move(src, dst): 將src移動至dst目錄下。若dst目錄不存在,則效果等同于src改名為dst。若dst目錄存在,將會把src文件夾的所有內容移動至該目錄下面
src:源文件夾或文件
dst:移動至dst文件夾,或將文件改名為dst文件。如果src為文件夾,而dst為文件將會報錯
copy_function:拷貝文件的方式,可以傳入一個可執行的處理函數。默認為copy2,Python3新增參數
import shutil,os # 示例一,將src文件夾移動至dst文件夾下面,如果bbb文件夾不存在,則變成了重命名操作 folder1 = os.path.join(os.getcwd(),"aaa") folder2 = os.path.join(os.getcwd(),"bbb") shutil.move(folder1, folder2) # 示例二,將src文件移動至dst文件夾下面,如果bbb文件夾不存在,則變成了重命名操作 file1 = os.path.join(os.getcwd(),"aaa.txt") folder2 = os.path.join(os.getcwd(),"bbb") shutil.move(file1, folder2) # 示例三,將src文件重命名為dst文件(dst文件存在,將會覆蓋) file1 = os.path.join(os.getcwd(),"aaa.txt") file2 = os.path.join(os.getcwd(),"bbb.txt") shutil.move(file1, file2)
disk_usage(path): 獲取當前目錄所在硬盤使用情況。Python3新增方法
path:文件夾或文件路徑。windows中必須是文件夾路徑,在linux中可以是文件路徑和文件夾路徑
import shutil.os path = os.path.join(os.getcwd(),"aaa") info = shutil.disk_usage(path) print(info) # usage(total=95089164288, used=7953104896, free=87136059392)
chown(path, user=None, group=None): 修改路徑指向的文件或文件夾的所有者或分組。Python3新增方法
path:路徑
user:所有者,傳遞user的值必須是真實的,否則將報錯no such user
group:分組,傳遞group的值必須是真實的,否則將報錯no such group
import shutil,os path = os.path.join(os.getcwd(),"file.txt") shutil.chown(path,user="root",group="root")
which(cmd, mode=os.F_OK | os.X_OK, path=None): 獲取給定的cmd命令的可執行文件的路徑。Python3新增方法
import shutil info = shutil.which("python3") print(info) # /usr/bin/python3
歸檔操作
shutil還提供了創建和讀取壓縮和存檔文件的高級使用程序。內部實現主要依靠的是zipfile和tarfile模塊
make_archive(base_name, format, root_dir, …): 生成壓縮文件
base_name:壓縮文件的文件名,不允許有擴展名,因為會根據壓縮格式生成相應的擴展名
format:壓縮格式
root_dir:將制定文件夾進行壓縮
import shutil,os base_name = os.path.join(os.getcwd(),"aaa") format = "zip" root_dir = os.path.join(os.getcwd(),"aaa") # 將會root_dir文件夾下的內容進行壓縮,生成一個aaa.zip文件 shutil.make_archive(base_name, format, root_dir)
get_archive_formats(): 獲取支持的壓縮文件格式。目前支持的有:tar、zip、gztar、bztar。在Python3還多支持一種格式xztar
unpack_archive(filename, extract_dir=None, format=None): 解壓操作。Python3新增方法
filename:文件路徑
extract_dir:解壓至的文件夾路徑。文件夾可以不存在,會自動生成
format:解壓格式,默認為None,會根據擴展名自動選擇解壓格式
import shutil,os zip_path = os.path.join(os.getcwd(),"aaa.zip") extract_dir = os.path.join(os.getcwd(),"aaa") shutil.unpack_archive(zip_path, extract_dir)
get_unpack_formats(): 獲取支持的解壓文件格式。目前支持的有:tar、zip、gztar、bztar和xztar。Python3新增方法
看完上述內容,你們對如何在Python中使用shutil標準庫有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。