第八章:数据压缩与归档-tarfile:tar归档访问-处理压缩归档

8.4.8 处理压缩归档
除了常规的tar归档文件之外,tarfile模块还可以处理通过gzip或bzip2协议压缩的归档。要打开一个压缩归档,可以修改传入open()的模式串,根据所需压缩方法的不同,在模式串中包含":gz"或":bz2"。

import tarfile
import os

fmt = '{:<30} {:<10}'
print(fmt.format('FILENAME','SIZE'))
print(fmt.format('README.txt',os.stat('README.txt').st_size))
FILES = [
    ('tarfile_compression.tar','w'),
    ('tarfile_compression.tar.gz','w:gz'),
    ('tarfile_compression.tar.bz2','w:bz2'),
    ]

for filename,write_mode in FILES:
    with tarfile.open(filename,mode=write_mode) as out:
        out.add('README.txt')

    print(fmt.format(filename,os.stat(filename).st_size),
          end=' ')
    print([
        m.name
        for m in tarfile.open(filename,'r:*').getmembers()
        ])

在打开一个现有的归档并读取数据时,可以指定"r:*"让tarfile自动确定要使用的压缩方法。
运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43193719/article/details/89292752