Python 3 - извлечь вложенный мульти-контентный архив 7z - PullRequest
0 голосов
/ 26 мая 2020

У меня есть вложенный мульти-контентный архив 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.

...