извлечь файл 7z, используя python 3

Я пытался распаковать файл 7z с помощью python, но не могу понять. Я подумал, что могу использовать модуль lzma в python 3, но не могу понять:

Я думал, что это будет работать как пакет zipfile:

import lzma
with lzma.open('data.7z') as f:
    f.extractall(r"<output path>")

но после прочтения документов кажется, что нет. Итак, вот мой вопрос: как вы можете извлечь файл 7z, используя стандартный пакет? Я не хочу вызывать подпроцесс для извлечения файлов с помощью 7-zip, потому что я не могу гарантировать, что у пользователей установлено это программное обеспечение.

Я искал в Интернете и стеке oerflow и заметил, что все ответы почти восходят к использованию подпроцессов, которых я хотел бы избежать, как чумы.

Хотя в stackoverflow есть похожие вопросы, все ответы по-прежнему зависят от 7-zip или 7zip SDK. Я не хочу использовать 7-zip sdk/exe для извлечения, потому что это предполагает, что у пользователей установлено программное обеспечение.

Вот свойства из файла 7z:

введите здесь описание изображения


person code base 5000    schedule 23.05.2017    source источник
comment
@Tezirg это для python 2, а не 3   -  person code base 5000    schedule 23.05.2017
comment
выполнив приведенный выше код, какой результат вы получите? любые исключения?   -  person Nabeel Ahmed    schedule 23.05.2017
comment
@NabeelAhmed Builtins.AttributeError: объект «LZMAFile» не имеет атрибута «extractall»   -  person code base 5000    schedule 23.05.2017
comment
Я думаю, что это может быть дубликат: Python3: lzma unpack .7z file   -  person pgmank    schedule 22.09.2017


Ответы (1)


Как насчет того, чтобы попробовать это?:

from pyunpack import Archive
Archive('data.7z').extractall("<output path>")
person Matt Dnv    schedule 21.08.2019
comment
Чудесно, после pip install pyunpack и pip install patool заработало отлично! - person a.t.; 21.08.2020