Cómo recorrer un archivo tar.gz que contiene archivos zip sin extracción

Tengo un gran archivo tar.gz para analizar usando una secuencia de comandos de python. El archivo tar.gz contiene una serie de archivos zip que pueden incrustar otros archivos .gz en él. Antes de extraer el archivo, me gustaría recorrer la estructura del directorio dentro de los archivos comprimidos para ver si ciertos archivos o directorios están presentes. Al mirar el archivo tar y el módulo zipfile no veo ninguna función existente que me permita obtener una tabla de contenido de un archivo zip dentro de un archivo tar.gz.

Aprecio tu ayuda,

No se puede acceder sin extraer el archivo. Sin embargo, no es necesario extraerlo en el disco si no lo desea. Puede usar el método tarfile.TarFile.extractfile para obtener un objeto similar a un archivo que luego puede pasar a tarfile.open como el argumento fileobj . Por ejemplo, dados estos tarfiles nesteds:

 $ 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 

Puedes acceder a archivos desde el interior así:

 >>> 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' 

y solo se extraen a la memoria.

Sospecho que esto no es posible y que tendrá que progtwigrlo manualmente.

Los archivos .tar.gz se guardan primero en un archivo comprimido y luego se empaquetan con lo que son esencialmente dos aplicaciones diferentes, en sucesión. Para acceder al archivo tar, es probable que primero tengas que descomprimirlo.

Además, una vez que tiene acceso al archivo tar después de descomprimirlo, no funciona bien el acceso aleatorio. No hay un repository central en el archivo tar que enumera los contenidos.