2012-01-13 35 views
28

Tengo un archivo comprimido: my_zip.zip. Dentro hay un archivo txt, cuyo nombre no conozco. Estaba echando un vistazo al módulo zipfile de Python (http://docs.python.org/library/zipfile.html), pero no podía dar demasiado sentido a lo que estoy tratando de hacer.obtener lista de archivos incluidos en un archivo zip

¿Cómo puedo hacer el equivalente de 'doble clic' en el archivo zip para obtener el archivo txt y luego utilizar el archivo txt, así que puede hacer:

>>> f = open('my_txt_file.txt','r') 
>>> contents = f.read() 

Respuesta

43

Lo que necesita es ZipFile.namelist() que le dará una lista de todos los contenidos del archivo, luego puede hacer un zip.open('filename_you_discover') para obtener el contenido de ese archivo.

+3

O use ['infolist()'] (https://docs.python.org/2/library/zipfile.html#zipfile.ZipFile.infolist) si desea obtener otros detalles; como la fecha modificada o el tamaño comprimido –

+1

¿Hay algún método que devuelva los nombres de los archivos como un iterador en lugar de una lista? – Elliott

12
import zipfile 

zip=zipfile.ZipFile('my_zip.zip') 
f=zip.open('my_txt_file.txt') 
contents=f.read() 
f.close() 

se puede ver la documentación here. En particular, el método namelist() le dará los nombres de los miembros del archivo zip.

+1

Me sale un error al decir que "No hay ningún elemento llamado '' en el archivo". Tenga en cuenta que ** no sé ** qué nombre tiene el nombre del archivo comprimido (y es diferente del nombre del archivo zip). – David542

+0

¿Por qué los votos a favor? –

Cuestiones relacionadas