Python提取/解压RAR文件错误

2024-04-30 01:16:24 发布

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

我试图用Python脚本提取RAR文件。我只找到了两种可能的方法:使用patoolib或使用rarfile。不幸的是,这两个选项都在我的代码中引发了很多错误,我不知道如何修复这些错误。在

首先,我只试过patool和patoolib。在错误之后,我换成了rarfile和unrar。第一个似乎比较容易,但我不理解错误。第二个问题需要在环境变量方面采取很多行动,我不确定我是否做得对。在

import patoolib
patoolib.extract_archive("my_file.rar", outdir=r"C:\Users\User1\Desktop\Example_dir")

错误说明:

^{pr2}$

我从here得到这个选项。我知道这个错误说明了字符串变量,但我不知道如何解释它。在

第二种选择是使用rarfile和unrar。在

import patoolib
from unrar import rarfile
from pyunpack import Archive

rarfile.UNRAR_TOOL = r"C:\Program Files (x86)\UnrarDLL\x64\UnRAR64.dll"


rarpath = 'my_file.rar'
rf = rarfile.RarFile(rarpath)
rf.extractall()
rf.extractall(r"C:\Users\User1\Desktop\Example_dir")

此选项引发了一个无理取闹的错误:

PatoolError('patool can not unpack\n' + str(p.stderr)) pyunpack.PatoolError: patool can not unpack patool error: error extracting G:\program\test.rar: could not find an executable program to extract format rar; candidates are (rar,unrar,7z),

另外,还有一个错误:

RarCannotExec: Unrar not installed? (rarfile.UNRAR_TOOL='unrar')

rarfile documentation显示,UNRAR\u工具需要是unrar.exe文件. 我已经完成了“pip install unrar”,我已经通过“pip”安装了上面所有的库。根据this的答案,我已经下载了UnRARDLL(http://www.rarlab.com/rar/UnRARDLL.exe),但我不知道应该将哪个.exe文件分配给UNRAR\u工具。我已经将环境路径添加到C:\Program Files(x86)\UnrarDLL\x64\UnRAR64.dll中,作为UNRAR\LIB峎path,但它没有帮助。在

我只想用Python脚本解开一些文件。越容易越好。你能告诉我我做错了什么吗?也许有别的方法可以解开一些文件?在


Tags: 文件方法import脚本选项错误notexe
2条回答

TypeError异常声明您试图比较字符串和整数。如果对if verbosity >= 0:的引用是正确的,则意味着verbosity变量是字符串。
也许您设置了verbosity = '1',而不是之前的verbosity = 1。在

另一个错误就是它所说的:could not find an executable program to extract format rar; candidates are (rar,unrar,7z)
代码期望找到rarunrar或{}(7zip)之一的可执行文件。如果你已经安装了它们,也许你需要告诉patoolib关于它们。在

线

rarfile.UNRAR_TOOL = r"C:\Program Files (x86)\UnrarDLL\x64\UnRAR64.dll"

看起来不错,但如果它不起作用,则可能需要按照linked answer中的步骤操作,并设置UNRAR_LIB_PATH环境变量。
这应该解释如何在Windows上设置环境变量:https://helpdeskgeek.com/windows-10/add-windows-path-environment-variable/

几分钟前我找到了patoolib的主人source。{{cd2>现在知道{cd1}是函数的参数。我不知道verbosity在这个函数中做什么。另外,我应该如何设置program?现在我有这样的东西:

import patoolib
patoolib.extract_archive(archive="my_file.rar", verbosity=0 ,outdir=or"C:\Users\User1\Desktop\Example_dir", program=r"C:\Program Files (x86)\UnrarDLL\x64\UnRAR64.dll)

错误说明:

^{pr2}$

相关问题 更多 >