本文實例講述了Python標準庫shutil用法。分享給大家供大家參考,具體如下:
shutil模塊提供了許多關于文件和文件集合的高級操作,特別提供了支持文件復制和刪除的功能。
文件夾與文件操作
copyfileobj(fsrc, fdst, length=16*1024): 將fsrc文件內容復制至fdst文件,length為fsrc每次讀取的長度,用做緩沖區大小
import shutilf1 = open("file.txt","r")f2 = open("file_copy.txt","a+")shutil.copyfileobj(f1,f2,length=1024)copyfile(src, dst): 將src文件內容復制至dst文件
import shutilshutil.copyfile("file.txt","file_copy.txt")copymode(src, dst): 將src文件權限復制至dst文件。文件內容,所有者和組不受影響
import shutilshutil.copymode("file.txt","file_copy.txt")copystat(src, dst): 將權限,上次訪問時間,上次修改時間以及src的標志復制到dst。文件內容,所有者和組不受影響
import shutilshutil.copystat("file.txt","file_copy.txt")copy(src, dst): 將文件src復制至dst。dst可以是個目錄,會在該目錄下創建與src同名的文件,若該目錄下存在同名文件,將會報錯提示已經存在同名文件。權限會被一并復制。本質是先后調用了copyfile與copymode而已
improt shutil,osshutil.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方法而已
improt shutil,osshutil.copy2("file.txt","file_copy.txt")# 或者shutil.copy2("file.txt",os.path.join(os.getcwd(),"copy"))	ignore_patterns(*patterns): 忽略模式,用于配合copytree()方法,傳遞文件將會被忽略,不會被拷貝
copytree(src, dst, symlinks=False, ignore=None): 拷貝文檔樹,將src文件夾里的所有內容拷貝至dst文件夾
ignore_patterns()import shutil,osfolder1 = 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): 移除文檔樹,將文件夾目錄刪除
import shutil,osfolder1 = os.path.join(os.getcwd(),"aaa")shutil.rmtree(folder1)
move(src, dst): 將src移動至dst目錄下。若dst目錄不存在,則效果等同于src改名為dst。若dst目錄存在,將會把src文件夾的所有內容移動至該目錄下面
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新增方法
import shutil.ospath = 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新增方法
import shutil,ospath = 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 shutilinfo = shutil.which("python3")print(info)   # /usr/bin/python3歸檔操作
shutil還提供了創建和讀取壓縮和存檔文件的高級使用程序。內部實現主要依靠的是zipfile和tarfile模塊
make_archive(base_name, format, root_dir, …): 生成壓縮文件
import shutil,osbase_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新增方法
import shutil,oszip_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新增方法
關于shutil的更多操作:https://docs.python.org/3/library/shutil.html
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答