首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python中解压.rar文件?

如何在Python中解压.rar文件?
EN

Stack Overflow用户
提问于 2020-09-29 22:25:52
回答 2查看 2.6K关注 0票数 0

我在Python中解压.rar文件时遇到了一个问题。我使用的是macOS,带有Anaconda Navigator和Spyder IDE。我已经安装了unrarpyunpackpy7zrrarfilepatool包。然而,当我运行这段代码时:

代码语言:javascript
运行
复制
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')

我得到了错误消息:

代码语言:javascript
运行
复制
PatoolError: could not find an executable program to extract format rar; candidates are (rar,unrar,7z),

代码语言:javascript
运行
复制
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)))

有没有人能帮帮我?

EN

回答 2

Stack Overflow用户

发布于 2020-09-29 22:32:57

您可以使用rarfile模块

代码语言:javascript
运行
复制
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))
票数 1
EN

Stack Overflow用户

发布于 2020-10-07 23:39:29

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

在Anaconda环境中,

代码语言:javascript
运行
复制
conda install unrar

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

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

代码语言:javascript
运行
复制
conda install -c conda-forge 7zip

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64121660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档