在Python中提取文件的gzip文件夹

时间:2015-11-12 19:46:45

标签: python gzip

我有一个名为gziptest.tar.gz的压缩文件夹,其中包含几个纯文本文件。

我希望能够获取文件的文件名和相应内容,但gzip库的使用示例不包括此内容。

以下代码:

import gzip
in_f = gzip.open('/home/cholloway/gziptest.tar.gz')
print in_f.read()

产生输出:

gzip test/file2000664 001750 001750 00000000016 12621163624 015761 0ustar00chollowaycholloway000000 000000 I like apples
gzip test/file1000664 001750 001750 00000000025 12621164026 015755 0ustar00chollowaycholloway000000 000000 hello world
line two
gzip test/000775 001750 001750 00000000000 12621164026 015035 5ustar00chollowaycholloway000000 000000 

我可以使用一些正则表达式来检测新文件的开头并提取文件名,但我想知道gzip或其他标准python库中是否已存在此功能。

1 个答案:

答案 0 :(得分:5)

对于该文件,请勿使用gzip库。使用tarfile库。

您正在使用的文件是文件test/*的tar存档的gzip压缩。

如果您只想恢复tar存档,请使用gzip解压缩该文件。生成的文件(如您所见)是您所需文件的存档。

逻辑上,如果要访问tar存档中的文件,我们必须首先使用gzip库来恢复tar存档,然后使用tarfile库来恢复文件。

实际上,我们只使用tarfile库:tarfile库会代表您自动调用gzip库。

我已从tarfile手册页的the examples section复制了此示例:

import tarfile
tar = tarfile.open("sample.tar.gz")
tar.extractall()
tar.close()