Python中的模块--tarfile模块

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)

你可能感兴趣的:(Python中的模块--tarfile模块)