我有一个大的tar.gz文件要使用python脚本进行分析。 tar.gz文件包含许多可能在其中嵌入其他.gz文件的zip文件。在提取文件之前,我想浏览压缩文件中的目录结构,以查看是否存在某些文件或目录。通过查看tarfile和zipfile模块,我没有看到任何允许我在tar.gz文件中获取zip文件内容表的现有函数。
感谢您的帮助,
答案 0 :(得分:5)
如果不解压缩文件,就无法实现。但是,如果您不想,则无需将其提取到磁盘。您可以使用tarfile.TarFile.extractfile
方法获取类似文件的对象,然后将其作为tarfile.open
参数传递给fileobj
。例如,给定这些嵌套的tarfiles:
$ cat bar/baz.txt
This is bar/baz.txt.
$ tar cvfz bar.tgz bar
bar/
bar/baz.txt
$ tar cvfz baz.tgz bar.tgz
bar.tgz
您可以像这样访问内部文件:
>>> import tarfile
>>> baz = tarfile.open('baz.tgz')
>>> bar = tarfile.open(fileobj=baz.extractfile('bar.tgz'))
>>> bar.extractfile('bar/baz.txt').read()
'This is bar/baz.txt.\n'
并且它们只被提取到记忆中。
答案 1 :(得分:1)
我怀疑这是不可能的,你必须手动编程。
.tar.gz文件首先是tar,然后连续使用基本上两个不同的应用程序进行gzip压缩。要访问tar文件,您可能首先必须取消gzip,
此外,一旦您在取消压缩后访问tar文件,它就不能很好地进行随机访问。 There is no central repository in the tar file that lists the contents.