Python:遍历包含gzip文件的tar档案

2 投票
2 回答
764 浏览
提问于 2025-04-16 10:48

我有一些.tar文件(没有压缩过)。

每个.tar文件里都有一些.gz文件。

我想要打开这些.tar文件,获取里面所有文件的未压缩内容。

所以我写了以下代码:

#!/usr/bin/python2.5 -u

import tarfile
import zlib

ar = tarfile.open('20101231.tar', 'r')

for item in ar:
    if item.name[-3:] == ".gz":
        print zlib.decompress(ar.extractfile(item).read())

f.close()

但是它不管用!出现了错误:“zlib.error: Error -3 while decompressing data: incorrect header check”。

不过我可以在命令行里用'tar xvf 20101231.tar && gzip -d 20101231/some_file.gz',这样一切都能正常工作!

但我就是无法在Python里做到这一点。

2 个回答

0

试试这个:

this_tar = tarfile.open(filepath)
for file in this_tar.getnames():
    ...do stuff...

这个代码会返回TAR文件中的每一个文件。

3

试试用 tarfile.open('20101231.tar', 'r:') 这个方法,这样可以明确地关闭压缩功能。

撰写回答