【问题标题】:How to unpack .rar file in Python?如何在 Python 中解压 .rar 文件?
【发布时间】:2021-01-15 04:27:54
【问题描述】:

我在用 Python 解压 .rar 文件时遇到问题。我正在使用 macOS、Anaconda Navigator 和 Spyder IDE。 我已经安装了unrarpyunpackpy7zrrarfilepatool 包。但是,当我运行此代码时:

import zipfile

import numpy as np
import pandas as pd
from rarfile import RarFile
import patoolib
from pyunpack import Archive

# Archive('aaa.rar').extractall(".")
patoolib.extract_archive('aaa.rar')

我收到错误消息:

PatoolError: could not find an executable program to extract format rar; candidates are (rar,unrar,7z),

File "/opt/anaconda3/lib/python3.7/site-packages/patoolib/__init__.py", line 684, in extract_archive
    return _extract_archive(archive, verbosity=verbosity, interactive=interactive, outdir=outdir, program=program)

  File "/opt/anaconda3/lib/python3.7/site-packages/patoolib/__init__.py", line 470, in _extract_archive
    program = find_archive_program(format, 'extract', program=program)

  File "/opt/anaconda3/lib/python3.7/site-packages/patoolib/__init__.py", line 336, in find_archive_program
    raise util.PatoolError("could not find an executable program to %s format %s; candidates are (%s)," % (command, format, ",".join(programs)))

有人可以帮帮我吗?

【问题讨论】:

  • 当你打开一个shell并运行unrar时会发生什么?如果您在 Anaconda 环境中尝试相同的操作?问题是patoolib 找不到unrar 可执行文件。它要么未安装,不在您的 PATH 上,要么在 Anaconda 环境中找不到。
  • 如果我从终端输入“unrar”,它会显示我可以使用的命令的信息(提取文件、列出存档内容……)。如果我在 Anaconda 环境中键入“unrar”,它会显示“NameError: name 'unrar' is not defined”

标签: python macos archive rar unrar


【解决方案1】:

你可以使用rarfile模块

import rarfile

rf = rarfile.RarFile("myarchive.rar")
for f in rf.infolist():
    print(f.filename, f.file_size)
    if f.filename == "README":
        print(rf.read(f))

【讨论】:

  • 这不会提取文件,它只会打印.rar中的文件名。
【解决方案2】:

问题是 Anaconda 无法在 Anaconda 环境中找到 unrar(以及您在本地安装的其他程序)。解决方案是将它们安装在该环境中。


在您的 Anaconda 环境中,

conda install unrar

将使unrar 可用,并使依赖它的patoolib 等Python 包工作。


Conda 还提供了conda package 用于处理.rar 文件,可以安装

conda install -c conda-forge 7zip

有关 Conda 环境的更多信息,请访问 here。他们特别说 Conda 环境的好处之一是它“管理非 Python 依赖项(R、Perl、任意可执行文件)。”其中unrar 是任意可执行文件。

【讨论】:

  • 感谢您的回答。我在 Anaconda 环境中成功安装了 unrar(输入“conda install unrar”),但不幸的是它仍然无法正常工作,并且错误与之前相同
猜你喜欢
  • 2015-06-23
  • 2012-03-16
  • 2020-09-18
  • 1970-01-01
  • 2020-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-03
相关资源
最近更新 更多