如何使用Python解压缩.zip
或.rar
文件?
晚了,但我对任何一个答案都不满意。
pip install patool
import patoolib
patoolib.extract_archive("foo_bar.rar", outdir="path here")
可在 Windows 和 Linux 上运行,无需其他库。
尝试使用pyunpack
包:
from pyunpack import Archive
Archive('a.zip').extractall('/path/to')
patool
或其他工具吗? - Basj经过深入研究,这是我的发现:
patool
是一个应用程序,提供统一的命令行作为其他外部压缩应用程序的包装器。本地情况下,它只能处理TAR、ZIP、BZIP2和GZIP,无需外部支持。pyunpack
是Python库,本地只能处理zip,但提供了与patool
的接口。有了这个想法,在我身上有用的是以下事情:
pip install patool pyunpack
然后使用它:
import pyunpack
pyunpack.Archive(archive_file).extractall(extract_dir)
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))
这里有信息和文件:
rarfile
,在尝试提取文件时可能会遇到问题。这是因为提取使用的是来自winrar网站(http://www.rarlab.com/rar_add.htm)的UnRaR.exe工具。
Windows的直接链接:http://www.rarlab.com/rar/unrarw32.exe。
请确保拥有此文件。
我将其放在C:\Python27\UnRar.exe
中。
像这样编辑文件:C:\Python27\Lib\site-packages\rarfile.py
:
UNRAR_TOOL = r"c:\python27\unrar.exe"
这对我很有帮助。 - E235unrar.exe
,这在Linux上是不可用的。 - Maksym Ganenkounrar
,但提取和更新需要。您也可以使用开源程序 unar
作为后端代替 unrar
。 - giuliano-oliveiraunrar.exe
吗? - Basj这种方法仅需要安装7zip。
在每个支持7zip的系统上都能无缝运行。
完全不需要使用Python包。
import subprocess
subprocess.run('7z x -oOutdir archive.rar')
subprocess模块是Python自带的。
patoolib.util.PatoolError: could not find an executable program to extract format rar; candidates are (rar,unrar,7z)
的错误。如果我的理解是正确的,我需要其中一个实用工具,这和最初的目的相悖。 - some user