Cómo leer archivos de texto en una carpeta comprimida en Python

Tengo un archivo de datos comprimido (todo en una carpeta, luego comprimido). Quiero leer cada archivo sin descomprimir. Probé varios métodos pero nada funciona para ingresar la carpeta en el archivo zip. ¿Cómo debo lograr eso?

Sin carpeta en el archivo zip:

with zipfile.ZipFile('data.zip') as z: for filename in z.namelist(): data = filename.readlines() 

Con una carpeta:

 with zipfile.ZipFile('data.zip') as z: for filename in z.namelist(): if filename.endswith('/'): # Here is what I was stucked 

namelist() devuelve una lista de todos los elementos en un archivo de forma recursiva.

Puede verificar si un elemento es un directorio llamando a os.path.isdir () :

 import os import zipfile with zipfile.ZipFile('archive.zip') as z: for filename in z.namelist(): if not os.path.isdir(filename): # read the file with z.open(filename) as f: for line in f: print line 

Espero que ayude.

Tengo el código de Alec para trabajar. Hice algunas ediciones menores: (nota, esto no funcionará con archivos zip protegidos con contraseña)

 import os import sys import zipfile z = zipfile.ZipFile(sys.argv[1]) # Flexibility with regard to zipfile for filename in z.namelist(): if not os.path.isdir(filename): # read the file for line in z.open(filename): print line z.close() # Close the file after opening it del z # Cleanup (in case there's further work after this)