日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python tarfile模块(压缩解压tar)

發布時間:2025/3/15 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python tarfile模块(压缩解压tar) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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可以重命名文件

壓縮實例

import tarfile# 壓縮 tar = tarfile.open('your.tar','w') # 創建一個壓縮包 tar.add('/Users/wupeiqi/PycharmProjects/bbs2.log', arcname='bbs2.log') # 將文件添加到壓縮包并命名 tar.add('/Users/wupeiqi/PycharmProjects/cmdb.log', arcname='cmdb.log') # tar.close() # 關閉壓縮包# 解壓 tar = tarfile.open('your.tar','r') # 打開一個壓縮包 tar.extractall() # 解壓包內所有文件(可設置解壓地址) tar.close() # 關閉壓縮包

壓縮某個目錄下所有文件

def compress_file(tarfilename, dirname): # tarfilename是壓縮包名字,dirname是要打包的目錄if os.path.isfile(dirname):with tarfile.open(tarfilename, 'w') as tar:tar.add(dirname)else:with tarfile.open(tarfilename, 'w') as tar:for root, dirs, files in os.walk(dirname):for single_file in files:# if single_file != tarfilename:filepath = os.path.join(root, single_file)tar.add(filepath)compress_file('test.tar', 'test.txt') compress_file('t.tar', '.')

添加文件到已有的tar包中

def addfile(tarfilename, dirname): # tarfilename是壓縮包名字,dirname是要打包的目錄if os.path.isfile(dirname):with tarfile.open(tarfilename, 'a') as tar:tar.add(dirname)else:with tarfile.open(tarfilename, 'a') as tar:for root, dirs, files in os.walk(dirname):for single_file in files:# if single_file != tarfilename:filepath = os.path.join(root, single_file)tar.add(filepath)addfile('t.tar', 'ttt.txt') addfile('t.tar', 'ttt')

mode值

'r' or 'r:*' Open for reading with transparent compression (recommended). 'r:' Open for reading exclusively without compression. 'r:gz' Open for reading with gzip compression. 'r:bz2' Open for reading with bzip2 compression. 'a' or 'a:' Open for appending with no compression. The file is created if it does not exist. 'w' or 'w:' Open for uncompressed writing. 'w:gz' Open for gzip compressed writing. 'w:bz2' Open for bzip2 compressed writing.

總結

以上是生活随笔為你收集整理的Python tarfile模块(压缩解压tar)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。