Я ищу способ распаковать вложенные zip-файлы в python. Например, рассмотрим следующую структуру (гипотетические имена для простоты):Unzip вложенные файлы zip в python
- Папка
- ZipfileA.zip
- ZipfileA1.zip
- ZipfileA2.zip
- ZipfileB .zip
- ZipfileB1.zip
- ZipfileB2.zip
- ZipfileA.zip
... и т.д.. Я пытаюсь получить доступ к текстовым файлам, которые находятся во втором zip-файле. Я, конечно, не хочу извлекать все, так как числа сдвига будут разбивать компьютер (в первом слое есть несколько сотен застежек, а во втором - почти 10 000).
Я играл с модулем zipfile - я могу открыть 1-й уровень zip-файлов. Например .:
zipfile_obj = zipfile.ZipFile("/Folder/ZipfileA.zip")
next_layer_zip = zipfile_obj.open("ZipfileA1.zip")
Однако это возвращает «ZipExtFile» экземпляр (а не файл или ZipFile экземпляра) - и я не могу потом пойти и открыть этот конкретный тип данных. То, что я не могу это сделать:
data = next_layer_zip.open(data.txt)
Я, однако, может «читать» этот файл архива с:
next_layer_zip.read()
Но это совершенно бесполезно! (т. е. может считывать только сжатые данные/goobledigook).
Кто-нибудь есть какие-либо идеи о том, как я мог бы идти об этом (без с использованием ZipFile.extract) ??
Я натолкнулся на это, http://pypi.python.org/pypi/zip_open/ - который выглядит так, как я хочу, но он, похоже, не работает для меня. (продолжайте получать "[Errno 2] Нет такого файла или каталога:" для файлов, которые я пытаюсь обработать, используя этот модуль).
Любые идеи были бы высоко оценены! Заранее спасибо
для тех из вас, кто использует 3.3, чтобы сэкономить вам некоторое время 'TypeError: ожидаемый строковый аргумент, полученный 'bytes'', связанный с линией' memory_zip.write (parent_zip.open (child_zip_path) .read()) 'не уверен в обходной путь – user25064