【发布时间】:2013-07-10 23:16:30
【问题描述】:
如何使用 Python 提取 .zip 或 .rar 文件?
【问题讨论】:
如何使用 Python 提取 .zip 或 .rar 文件?
【问题讨论】:
迟到了,但我对任何答案都不满意。
pip install patool
import patoolib
patoolib.extract_archive("foo_bar.rar", outdir="path here")
无需任何其他库即可在 Windows 和 linux 上运行。
【讨论】:
patoolib.util.PatoolError: could not find an executable program to extract format rar; candidates are (rar,unrar,7z), 如果我理解正确,我需要有一个实用程序,这违背了目的。
试试pyunpack 包:
from pyunpack import Archive
Archive('a.zip').extractall('/path/to')
【讨论】:
patool 或其他一些?
【讨论】:
rarfile,您在尝试提取文件时可能会遇到问题。这是因为提取使用的是来自 winrar 网站 (rarlab.com/rar_add.htm) 的 UnRaR.exe 工具。 Windows 的直接链接:rarlab.com/rar/unrarw32.exe。确保有这个文件。我把它放在C:\Python27\UnRar.exe。编辑文件:C:\Python27\Lib\site-packages\rarfile.py 这样:UNRAR_TOOL = r"c:\python27\unrar.exe" 它帮助了我。
unrar.exe,这在 Linux 上不可用
unrar 可执行文件,可以使用包管理器安装它。在 Debian/Ubuntu 上是 sudo apt install unrar
unrar,但是,提取和更新它是必需的。您也可以使用开源程序 unar 而不是 unrar 作为支持。
经过一番深入研究,以下是我的发现:
patool 是为其他外部压缩应用程序提供统一命令行作为包装器的应用程序。原生只能处理 TAR、ZIP、BZIP2 和 GZIP,无需外部支持。pyunpack 是 Python 库,只能原生处理 zip,但提供到 patool 的接口。考虑到这一点,以下事情对我有用:
pip install patool pyunpack然后使用它,
import pyunpack
pyunpack.Archive(archive_file).extractall(extract_dir)
【讨论】:
【讨论】:
unrar.exe?
此方法只需要安装 7zip。
在 7zip 的每个系统上都能完美运行。
根本不需要 python 包。
import subprocess
subprocess.run('7z x -oOutdir archive.rar')
子进程模块是python自带的。
【讨论】: