我有一个包含2个文件的RAR存档,我只想提取其中一个。我在另一个答案中发现可以使用rarfile程序包,根据documentation的说明,该程序包包含extract函数。但是,当我尝试运行脚本时,会显示FileNotFoundError: [WinError 2]和以下信息:During handling of the above exception, another exception occurred:... rarfile.RarCannotExec: Unrar not installed? (rarfile.UNRAR_TOOL='unrar')

从我可以找到的信息中,我看到它可能与PATH中缺少Unrar.exe可执行文件有关,因此我尝试添加它,但没有任何更改。另一个建议是将rarfile.UNRAR_TOOL='unrar'添加到脚本中,以配置软件包的行为,这也是同样的错误。

这是我的MWE,使用Python 3.5.3编写和测试:

from rarfile import RarFile

with RarFile('Test.rar') as file:
    file.extract(file.namelist()[0])


由于file.namelist()返回档案的内容,因此正在正确打开文件。

提前致谢!

最佳答案

根据OP评论进行更新:

我设法使用以下代码解压缩了一个文件

from rarfile import RarFile
RarFile.UNRAR_TOOL='C:\\full\\path\\to\\UnRARDLL.exe'

with RarFile('test.rar') as file:
    file.extract(file.namelist()[0])


下载UnRARDLL.exe,并提供正确的RarFile.UNRAR_TOOL完整路径。



您可能要使用patool

import patoolib
patoolib.extract_archive("Test.rar", outdir="/some/dir")




可在windowslinux上运行,不需要其他软件。
要安装,请使用:pip install patool

10-07 19:01