Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何遍历包含zip文件的tar.gz文件而不进行解压缩_Python - Fatal编程技术网

Python 如何遍历包含zip文件的tar.gz文件而不进行解压缩

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文件要使用python脚本进行分析。tar.gz文件包含许多zip文件,这些文件可能会嵌入其他.gz文件。在提取文件之前,我想遍历压缩文件中的目录结构,看看是否存在某些文件或目录。通过查看tarfile和zipfile模块,我看不到任何现有函数允许我在tar.gz文件中获取zip文件的内容表


感谢您的帮助,

我怀疑这是不可能的,您必须手动编程

.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
上一样。