第八章:数据压缩与归档-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。
运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值