第八章:数据压缩与归档-tarfile:tar归档访问-从归档读取元数据

8.4.2 从归档读取元数据
可以使用TarFile类直接处理一个tar归档文件。这个类支持一些方法来读取现有归档文件的有关数据,还可以通过增加更多文件来修改归档。要读取一个现有归档文件中的文件名,可以使用getnames()。

import tarfile

with tarfile.open('example.tar','r') as t:
    print(t.getnames())

这个函数的返回值是一个字符串列表,包含归档内容中的文件名。
运行结果:
在这里插入图片描述
linux下创建tar文件命令: tar -cf example.tar README.txt index.rst

除了文件名之外,还可以得到归档成员的元数据(作为TarInfo对象的实例)。

import tarfile
import time

with tarfile.open('example.tar','r') as t:
    for member_info in t.getmembers():
        print(member_info.name)
        print('  Modified:',time.ctime(member_info.mtime))
        print('  Mode    :',oct(member_info.mode))
        print('  Type    :',member_info.type)
        print('  Size    :',member_info.size,'bytes')
        print()

可以通过getmembers()和getmember()加载元数据。
在这里插入图片描述
如果提前已经知道归档成员名,则可以用getmember()获取其TarInfo对象。

import tarfile
import time

with tarfile.open('example.tar','r') as t:
    for filename in ['README.txt','notthere.txt']:
        try:
           info = t.getmember(filename)
        except KeyError:
            print('ERROR:Did not find {} in tar archive'.format(
                filename))
        else:
            print('{} is {:d} bytes'.format(info.name,info.size))

如果归档成员不存在,则getmember()会产生一个KeyError。
运行结果:
在这里插入图片描述

猜你喜欢

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