擅长:python、mysql、java
<p>对RAR文件的支持一般是相当差的,这是一个正常的经验。在</p>
<p>为了让<code>rarfile</code>Python模块正常工作,还必须安装一个支持的工具来提取RAR文件。只有两个选择是<code>bsdtar</code>或<code>unrar</code>。不要用Pip安装它们,你必须用你的Linux软件包管理器来安装(或者你自己安装,如果你认为计算机的时间比你的时间更有价值)。例如在基于Debian的系统(包括Ubuntu)上运行</p>
<pre><code>sudo apt install bsdtar
</code></pre>
<p>或者</p>
^{pr2}$
<p>请注意,bsdtar对RAR文件的支持级别与unrr不同。一些较新的RAR文件不会用bsdtar提取。在</p>
<p>那么您的代码应该如下所示:</p>
<pre><code>import rarfile
def unrar(file):
rf = rarfile.RarFile(file)
rf.extract_all()
unrar('/home/maze/Desktop/test.rar')
</code></pre>
<p>注意使用<code>rf.extract_all()</code>,而不是{<cd5>}。在</p>
<p>如果您只是在做<code>extract_all</code>,那么就不需要使用<code>rarfile</code>模块。您只需使用<code>subprocess</code>模块:</p>
<pre><code>import subprocess
path = '/path/to/archive.rar'
subprocess.check_call(['unrar', 'x', path])
</code></pre>
<p><code>rarfile</code>模块基本上只不过是<code>subprocess</code>的包装。在</p>
<p>当然,如果您有选择的话,我建议您将归档文件迁移到一种更可移植、更受支持的归档格式。在</p>