Estoy buscando una forma de descomprimir archivos zip anidados en python. Por ejemplo, considere la siguiente estructura (nombres hipotéticos para facilidad):Descomprimir archivos zip anidados en python
- Folder
- ZipfileA.zip
- ZipfileA1.zip
- ZipfileA2.zip
- ZipfileB .zip
- ZipfileB1.zip
- ZipfileB2.zip
- ZipfileA.zip
... etc. Estoy intentando acceder a los archivos de texto que están dentro del segundo zip. Ciertamente no quiero extraer todo, ya que los números de cizallamiento bloquearían la computadora (hay varios cientos de cremalleras en la primera capa, y casi 10.000 en la segunda capa (por zip)).
He estado jugando con el módulo 'zipfile' - puedo abrir el primer nivel de archivos zip. Ej .:
zipfile_obj = zipfile.ZipFile("/Folder/ZipfileA.zip")
next_layer_zip = zipfile_obj.open("ZipfileA1.zip")
Sin embargo, esto devuelve una instancia de "ZipExtFile" (no un archivo zip o instancia) - y no puedo seguir y luego abrir este tipo de datos en particular. Que no puedo hacer esto:
data = next_layer_zip.open(data.txt)
puedo sin embargo "leer" este archivo zip con:
next_layer_zip.read()
Pero esto es totalmente inútil! (es decir, solo puede leer datos comprimidos/goobledigook).
¿Alguien tiene alguna idea sobre cómo podría ir sobre esto (sin usando ZipFile.extract) ??
Me encontré con esto, http://pypi.python.org/pypi/zip_open/ - que parece hacer exactamente lo que quiero, pero parece que no funciona para mí. (sigue obteniendo "[Errno 2] No existe ese archivo o directorio:" para los archivos que estoy tratando de procesar, usando ese módulo).
¡Cualquier idea sería muy apreciada! Gracias de antemano
para aquellos de ustedes que usan 3.3, para ahorrar algo de tiempo 'TypeError: string argument expected, got 'bytes'' relacionado con la línea' memory_zip.write (parent_zip.open (child_zip_path) .read()) 'no estoy seguro del solución alternativa – user25064