使用Python 3提取7z文件

13
我尝试使用Python解压7z文件,但我似乎无法弄清楚如何做。我以为可以使用Python 3中的lzma模块,但我似乎也搞不清楚:

我认为它应该像zipfile包一样工作:

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

但是在阅读了这些文档之后,似乎并不是这样。所以我的问题是:如何使用标准包提取7z文件?我不想调用子进程使用7-zip提取文件,因为我无法保证用户已安装此软件。
我在互联网和stackoverflow上搜索过,并注意到所有答案几乎都回到使用子进程,而我想像瘟疫一样避免这种情况。
虽然stackoverflow上有类似的问题,但所有答案仍然依赖于7-zip或7zip SDK。我不想使用7-zip sdk/exe进行提取,因为这假定用户已安装该软件。
以下是7z文件的属性:

enter image description here


@Tezirg 这是针对 Python 2 而不是 3 的。 - code base 5000
执行上述代码,你得到了什么输出?有任何异常吗? - Nabeel Ahmed
1
@NabeelAhmed builtins.AttributeError: 'LZMAFile'对象没有属性'extractall'。 - code base 5000
我认为这可能是一个重复的问题:Python3: lzma unpack .7z file - pgmank
1个回答

22

怎么样尝试这个呢?

from pyunpack import Archive
Archive('data.7z').extractall("<output path>")

9
太棒了!在执行pip install pyunpackpip install patool之后,它运行得非常好! - a.t.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接