У меня есть вложенный мульти-контентный архив 7z. В нем есть несколько вложенных каталогов с файлами CSV. Я пытаюсь извлечь его с помощью Python. На основании поиска libarchive
кажется лучшим вариантом. Я следил за примерами из https://pypi.org/project/libarchive/ (за исключением того, что import libarchive.public
не работал, поэтому я изменил его на import libarchive
) и попробуйте следующее:
import libarchive
with libarchive.file_reader('my_7z_archive.7z') as e:
for entry in e:
with open(str(entry), 'wb') as f:
for block in entry.get_blocks():
f.write(block)
Это работает нормально когда я тестировал его на одном текстовом файле, сжатом до 7z. Но он не работает в многосодержащем архиве 7z с ошибкой: FileNotFoundError: [Errno 2] Нет такого файла или каталога Кто-нибудь может посоветовать по этому поводу?
ОБНОВЛЕНИЕ Мне удалось извлечь вложенный 7z, вызвав 7z.exe:
import subprocess
def extractfiles(zipname):
system = subprocess.Popen([r'C:\Program Files\7-Zip\7z.exe', 'e', zipname])
return(system.communicate())
extractfiles('my_7z_archive.7z')
But that is last option I would like to use.