tarfile模块是Python的标准模块之一,能够方便读取tar归档文件,还可以处理使用gzip和bz2压缩归档文件tar.gz和tar.bz2。
tarfile的语法格式:
tarfile.open(name=None, mode='r', fileobj=None, bufsize=10240, **kwargs)
mode action
'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.
'r:xz' Open for reading with lzma compression.
'x'or 'x:' Create a tarfile exclusively without compression. Raise an [FileExistsError]exception if it already exists.
'x:gz' Create a tarfile with gzip compression. Raise an [FileExistsError
]exception if it already exists.
'x:bz2' Create a tarfile with bzip2 compression. Raise an [FileExistsError
]exception if it already exists.
'x:xz' Create a tarfile with lzma compression. Raise an [FileExistsError
]exception if it already exists.
'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.
'w:xz' Open for lzma compressed writing.
使用tarfile压缩:
import tarfile
#创建压缩包名
tar = tarfile.open("/tmp/tartest.tar.gz","w:gz")
#创建压缩包
for root,dir,files in os.walk("/tmp/tartest"):
for file in files:
fullpath = os.path.join(root,file)
tar.add(fullpath)
tar.close()
使用tarfile解压:
def extract(tar_path, target_path):
try:
tar = tarfile.open(tar_path, "r:gz")
file_names = tar.getnames()
for file_name in file_names:
tar.extract(file_name, target_path)
tar.close()
except Exception as e:
print(e)