我有一个包含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")
可在
windows
和linux
上运行,不需要其他软件。要安装,请使用:
pip install patool