概述
在上一節(jié)连霉,我們介紹了Python的argparse模塊莺奸,包括:argparse模塊中一些常用的類和函數(shù)弛针。在這一節(jié)轰坊,我們將介紹Python的shutil模塊铸董。shutil模塊是一個用于文件和文件夾操作的實用模塊,它提供了一組用于處理文件和文件夾的高級接口肴沫,包括:文件和文件夾的復(fù)制粟害、刪除、移動樊零、重命名等操作我磁。shutil模塊是Python標準庫中的一部分,因此無需安裝任何第三方庫即可直接使用驻襟。
下面夺艰,我們將逐一介紹shutil模塊中一些常用的函數(shù)。
shutil.copy(src, dst)函數(shù)
shutil.copy(src, dst)函數(shù)用于復(fù)制文件src到dst沉衣。如果目標文件已存在郁副,則覆蓋它。這個函數(shù)只會復(fù)制文件的內(nèi)容豌习,不會復(fù)制文件的元數(shù)據(jù)存谎,比如:修改時間拔疚、訪問權(quán)限等。如果需要完整地復(fù)制文件既荚,則應(yīng)該使用下面的shutil.copy2函數(shù)稚失。
import shutil
# 復(fù)制文件
shutil.copy('path_to_src_file', 'path_to_dest_dir')
上面的示例代碼會將"path_to_src_file"文件復(fù)制到"path_to_dest_dir"目錄。如果目標目錄不存在恰聘,則shutil.copy函數(shù)會拋出一個異常句各。
shutil.copy2(src, dst)函數(shù)
shutil.copy2(src, dst)函數(shù)用于復(fù)制文件src到dst,同時保留原始文件的元數(shù)據(jù)晴叨,比如:修改時間凿宾、訪問權(quán)限等。如果目標文件已存在兼蕊,則覆蓋它初厚。
import shutil
# 復(fù)制文件
shutil.copy2('path_to_src_file', 'path_to_dest_dir')
shutil.copytree(src, dst)函數(shù)
shutil.copytree(src, dst)函數(shù)用于遞歸地復(fù)制文件夾src到dst。與shutil.copy和shutil.copy2不同孙技,shutil.copytree可以復(fù)制整個目錄樹产禾,而不僅僅是單個文件。如果目標目錄不存在牵啦,shutil.copytree會創(chuàng)建它下愈。如果目標目錄已經(jīng)存在,shutil.copytree會拋出一個異常蕾久。
import shutil
# 復(fù)制文件夾
shutil.copytree('path_to_src_dir', 'path_to_dest_dir')
shutil.rmtree(path)函數(shù)
shutil.rmtree(path)函數(shù)用于遞歸地刪除文件夾path及其內(nèi)容。如果文件夾不存在拌夏,則拋出異常僧著。與os.rmdir 不同,shutil.rmtree可以刪除一個包含文件和子目錄的目錄樹障簿。如果目錄樹中存在任何文件或子目錄盹愚,os.rmdir會拋出一個異常。
import shutil
# 刪除文件夾
shutil.rmtree('path_to_dir')
shutil.move(src, dst)函數(shù)
shutil.move(src, dst)函數(shù)用于將文件或文件夾src移動到dst站故。如果目標位置已存在同名文件或文件夾皆怕,則覆蓋它。
import shutil
# 將文件移動到另一個目錄
shutil.move('path_to_src_file', 'path_to_dest_dir')
shutil.make_archive函數(shù)
shutil.make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=False, owner=None, group=None, logger=None)函數(shù)用于創(chuàng)建一個壓縮文件西篓,返回其名稱愈腾。其各個參數(shù)的具體含義如下。
base_name:要創(chuàng)建的歸檔文件的基本名稱岂津,可以包含路徑虱黄。
format:歸檔文件的格式,比如:'zip'吮成、'tar'橱乱、'gztar' 等辜梳。
root_dir:要歸檔的目錄樹的根目錄。如果未指定泳叠,則使用當前目錄作瞄。
base_dir:相對于root_dir的基準目錄,用于確定要歸檔的文件危纫。如果未指定宗挥,則使用root_dir。
verbose:日志記錄級別叶摄,0表示不記錄属韧,大于0表示記錄。
dry_run:如果為True蛤吓,則只打印要執(zhí)行的操作宵喂,而不實際執(zhí)行。
owner会傲、group:歸檔文件的用戶和組锅棕,僅在Unix系統(tǒng)上有效。
logger:用于記錄日志的logger對象淌山。
import shutil
# 創(chuàng)建一個名為archive.zip的zip歸檔文件裸燎,包含path_to_dir目錄下的所有文件和子目錄
shutil.make_archive('archive', 'zip', 'path_to_dir')
shutil.unpack_archive函數(shù)
shutil.unpack_archive(filename, extract_dir, format=None)函數(shù)用于解壓縮給定的壓縮文件到指定的目錄。其各個參數(shù)的具體含義如下泼疑。
filename:要解壓縮的歸檔文件的路徑德绿。
extract_dir:解壓縮的目標目錄。
format:歸檔文件的格式退渗,比如:'zip'移稳、'tar'、'gztar' 等会油。如果未指定个粱,則根據(jù)文件名自動檢測。
pwd:用于解壓縮加密歸檔文件的密碼翻翩。
import shutil
# 解壓縮名為archive.zip的歸檔文件到path_to_dir目錄
shutil.unpack_archive('archive.zip', 'path_to_dir')
shutil.disk_usage(path)函數(shù)
shutil.disk_usage(path)函數(shù)用于返回指定路徑的磁盤使用情況都许。這個函數(shù)會返回一個元組,包含三個屬性:指定路徑的總磁盤空間(total)嫂冻、指定路徑中被占用的磁盤空間(used)胶征、指定路徑中未被占用的磁盤空間(free),都以字節(jié)數(shù)為單位進行表示桨仿。
import shutil
info = shutil.disk_usage('./')
# 輸出:usage(total=268436500480, used=36055289856, free=232381210624)
print(info)