這是我參與8月更文挑戰的第3天,活動詳情查看:8月更文挑戰python
咱們在前面已經學習了對文件操做的os模塊,對文件路徑操做的os.path模塊。shell
本期,咱們繼續學習關於文件的Python模塊—shutil。安全
(#^.^#),學習shutil模塊能夠對文件及文件夾壓解縮、移動、拷貝等高級的操做markdown
shutil模塊顧明思議sh + util,shell工具的意思,shutil模塊有以下特色app
💻注意ide
shutil模塊提供的拷貝文件也是不能拷貝文件的元數據。 (元數據:文件的大小與修改日期等信息。)工具
shutil模塊提供了os模塊對文件沒有的拷貝、移動。經常使用的方法以下:post
方法 | 做用 |
---|---|
shutil.copyfileobj(fsrc,fdst[length=16*1024]) | 將文件內容拷貝到另外一個文件中,能夠指定大小的內容 |
shutil.copyfile(src,dst) | 拷貝文件 |
shutil.copymode(src,dst) | 僅拷貝權限。內容、組、用戶均不變 |
shutil.copystat(src,dst) | 僅拷貝狀態的信息, |
包括:mode bits, atime, mtime, flags | |
shutil.copy(src,dst) | 拷貝文件和權限 |
shutil.copy2(src,dst) | 拷貝文件和狀態信息 |
shutil.ignore_patterns(*patterns) | 遞歸的複製文件內容及狀態信息,ignore的意思是排除 |
shutil.copytree(src,dst,symlinks=False,ignore=None,ignore=None) | 拷貝軟鏈接 |
shutil.rmtree(path[,ignore_errors[,onerror]]) | 遞歸刪除文件 |
shutil.move(src,dst) | 遞歸的去移動文件,它相似mv命令,其實就是重命名。 |
🌟shutil.copyfile(src,dst)學習
拷貝文件📃;能夠指定文件的大小。ui
注意:是src和dst必須是文件,不能夠是目錄 不然會報IOError: [Errno 13] Permission denied:
咱們來實現一下,從A文件夾下的文件批量複製到B文件夾下
import shutil
import os
def copyfile():
filefolds = os.listdir('./old')
print("old文件夾裏文件:",filefolds)
i = 0
for file in filefolds:
i = i+1
new_name = "New/"+"New"+str(i)+"_test"+'.txt'
print(new_name)
filename = "old/"+file+"/test.txt"
shutil.copyfile(filename, new_name)
copyfile()
複製代碼
🌟 shutil.copytree(src,dst,symlinks=False,ignore=None,ignore=None)
遞歸複製目錄及子目錄的文件和狀態信息 注意:
WindowsError: [Error 183]
import os
import shutil
# 切換到F:\JueJin目錄下
os.chdir(r"F:\JueJin")
shutil.copytree("./old/old0_test","./New3")
print("dst目錄下的文件:",os.listdir("./New3"))
複製代碼
shutil模塊也提供了對文件📃和文件夾📁打包、壓縮、解壓縮操做,常見方法以下:
方法 | 做用 |
---|---|
shutil.make_archive(base_name,format[,root_dir[,base_dir[]]]) | 建立一個歸檔文件(例如 zip 或 tar)並返回其名稱 |
shutil.get_archive_formats() | 返回支持的歸檔格式列表 |
shutil.register_archive_format(name,funvtion[,extra_args[,description]]) | 爲name格式註冊一個歸檔程序 |
ps: shutil模塊支持壓縮、解壓操做底層是依賴zipfile模塊和tarfile模塊
🌟shutil.make_archive(base_name,format[,root_dir[,base_dir[...]]])
base_name:壓縮打包後的文件名或者路徑名 format:壓縮或者打包格式「zip」,"tar","bztar"or"gztar" root_dir: 將哪一個目錄或者文件打包(也就是源文件)
makearchivefile("./old","./old/old0_test")
複製代碼
本期,咱們學習shutil模塊對os模塊對文件操做進行補充,重點有兩點:
咱們在須要是要對文件進行拷貝移動及壓縮解壓縮等操做,能夠藉助Python裏面的shutil模塊來爲咱們服務,提升咱們解決問題的速度~
以上是本期內容,歡迎大佬們點贊評論指正,下次見~ღ( ´・ᴗ・` )比心