python知識:tarfile模組
阿新 • • 發佈:2020-08-12
TarFile類對於就是tar壓縮包例項. 其由member塊組成, member塊則包括header塊和data塊. 每個member以TarInfo物件形式描述. 所以TarFile就是TarInfo的序列. 其初始化函式的形參和TarFile類的屬性對應, 其中比較重要是dereference屬性,預設False(此時symbolic檔案會以符號檔案存進去),設定為True時會將其目標檔案存到壓縮包.
-
getmember(name), getmembers(), getnames(): 分別返回指定檔名的TarInfo, 所有TarInfo和所有TarInfo檔名. 後兩者順序一致. 如果裡面有很多個同名的member, 則取最後的.
-
list(verbose=True)列出tar裡的檔案資訊, verbose相對於
ls -l
-
next()就是for方法迭代器呼叫的, 返回下一個TarInfo物件.
-
extractall(path=”.”, members=None), 解壓所有檔案,path是解壓路徑,預設當前目錄,如果指明members(一個子集,TarInfo列表, 也可以是迭代器).
-
extract(member, path=””), 解壓指定member的檔案,path是解壓路徑.
-
extractfile(member): 提取相應物件為一個只讀檔案物件.member這裡可以是檔名或者TarInfo.
-
add(name, arcname=None, recursive=True, exclude=None, filter=None): 根據檔名建立TarInfo物件並新增檔案到壓縮包,可以指定arcname在壓縮包裡面使用的另外的名字,recursive是對資料夾處理時是否遞迴,exclude不建議用,filter(需要用key=value形式)是一個函式名,輸入是TarInfo物件, 返回新的TarInfo物件或None(None的話就不被寫入到壓縮包, 可以用於過濾, 所以替代了exclude)
-
addfile(tarinfo, fileobj=None): 將TarInfo物件或者檔案物件新增到壓縮包.一般配合gettarinfo使用
-
gettarinfo(name=None, arcname=None, fileobj=None): 通過檔名或檔案物件來創造TarInfo物件. arcname可以重新命名檔案
-
close()關閉
1 import tarfile 2 3 # 壓縮 4 tar = tarfile.open('your.tar','w') # 建立一個壓縮包 5 tar.add('/Users/wupeiqi/PycharmProjects/bbs2.log', arcname='bbs2.log') # 將檔案新增到壓縮包並命名 6 tar.add('/Users/wupeiqi/PycharmProjects/cmdb.log', arcname='cmdb.log') # 7 tar.close() # 關閉壓縮包 8 9 # 解壓 10 tar = tarfile.open('your.tar','r') # 開啟一個壓縮包 11 tar.extractall() # 解壓包內所有檔案(可設定解壓地址) 12 tar.close() # 關閉壓縮包
借鑑:https://www.cnblogs.com/grissom/articles/6644991.html