python知識:tarfile模塊


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM