Python 如何遍历包含zip文件的tar.gz文件而不进行解压缩
我有一个很大的tar.gz文件要使用python脚本进行分析。tar.gz文件包含许多zip文件,这些文件可能会嵌入其他.gz文件。在提取文件之前,我想遍历压缩文件中的目录结构,看看是否存在某些文件或目录。通过查看tarfile和zipfile模块,我看不到任何现有函数允许我在tar.gz文件中获取zip文件的内容表Python 如何遍历包含zip文件的tar.gz文件而不进行解压缩,python,Python,我有一个很大的tar.gz文件要使用python脚本进行分析。tar.gz文件包含许多zip文件,这些文件可能会嵌入其他.gz文件。在提取文件之前,我想遍历压缩文件中的目录结构,看看是否存在某些文件或目录。通过查看tarfile和zipfile模块,我看不到任何现有函数允许我在tar.gz文件中获取zip文件的内容表 感谢您的帮助,我怀疑这是不可能的,您必须手动编程 .tar.gz文件首先是tar文件,然后是连续的两个不同应用程序的gzip文件。要访问tar文件,您可能必须首先取消gzip 此外
感谢您的帮助,我怀疑这是不可能的,您必须手动编程 .tar.gz文件首先是tar文件,然后是连续的两个不同应用程序的gzip文件。要访问tar文件,您可能必须首先取消gzip
此外,一旦您在解压缩tar文件后访问了它,它就不能很好地进行随机访问 如果不解压缩文件,就无法获取它。但是,如果不想将其解压缩到磁盘,则不需要将其解压缩到磁盘。您可以使用
tarfile.tarfile.extractfile
方法获取类似文件的对象,然后将其作为fileobj
参数传递给tarfile.open
。例如,给定这些嵌套文件:
$ 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'
tarfile模块有一个选项,可以列出tar.gz文件tar=tarfile.open(“sample.tar.gz”,“r:gz”)的TOC,我想要的是在tar.gz文件中获得zip文件的TOC,而不提取该文件。谢谢,谢谢你的回复。我实际上不需要阅读文件的内容。我只需要获取tgz文件中某个压缩文件的TOC。看起来这还是不可能的。不是不提取到内存,不是;tar文件不是这样工作的。tar文件是流(因为它们要放在磁带设备上,而磁带设备不能来回搜索),所以查看您拥有的文件的唯一方法是提取和读取。不过,您仍然不必解压缩到磁盘。你可以在
bar
的TOC上获得,就像在baz
上一样。