用Python中的RAR file从RAR存档中提取单个文件

2024-04-30 01:07:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含两个文件的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')

从我能找到的信息中,我看到它可能与路径中缺少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()返回存档的内容,文件已正确打开。

提前谢谢!


Tags: 文件脚本信息exceptionextract档案toolfile
2条回答

如果RAR文件使用压缩,则必须以某种方式使用unrr(或基于unrr源代码的某种东西)。如果不使用压缩,rarfile可以为您完成这一切。

佩德罗洛比托的解决方案必须奏效。如果您得到FileNotFoundError,我建议您再次检查您的文件名和路径。你的问题是:rarfile.UNRAR_TOOL='unrar',但是rarfile的大写必须是RarFile,如Pedro所示。两者都是适当的代码,但它们有不同的含义。同时尝试使用完整路径,不要忘记.exe。

根据操作注释更新:

我用下面的代码只解压了一个文件

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

相关问题 更多 >