【问题标题】:How can unrar a file with python如何用python解压文件
【发布时间】:2013-07-10 23:16:30
【问题描述】:

如何使用 Python 提取 .zip.rar 文件?

【问题讨论】:

    标签: python unzip unrar


    【解决方案1】:

    迟到了,但我对任何答案都不满意。

    pip install patool
    import patoolib
    patoolib.extract_archive("foo_bar.rar", outdir="path here")
    

    无需任何其他库即可在 Windows 和 linux 上运行。

    【讨论】:

    • 很好的库,但灵活性很低。例如,它不能覆盖 GZ 文件。有关详细信息,请参阅此问题:stackoverflow.com/questions/29631793/…
    • 我尝试了上面的方法并得到了patoolib.util.PatoolError: could not find an executable program to extract format rar; candidates are (rar,unrar,7z), 如果我理解正确,我需要有一个实用程序,这违背了目的。
    • 提取零件没有问题怎么办?
    • @someuser 你打这个?
    【解决方案2】:

    试试pyunpack 包:

    from pyunpack import Archive
    Archive('a.zip').extractall('/path/to')
    

    【讨论】:

    • 是否需要patool 或其他一些?
    • 是的,没有它只能提取 zip 文件。查看 pyunpack 文档,我提供的链接就是一切
    【解决方案3】:

    一个很好的包是rarfile

    信息和文档在这里:

    https://pypi.python.org/pypi/rarfile/

    https://rarfile.readthedocs.io/api.html

    【讨论】:

    • 如果您决定使用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 上不可用
    • @MaksymGanenko:在 Linux 上它需要 unrar 可执行文件,可以使用包管理器安装它。在 Debian/Ubuntu 上是 sudo apt install unrar
    • 对于列出存档成员名称,它不需要unrar,但是,提取和更新它是必需的。您也可以使用开源程序 unar 而不是 unrar 作为支持。
    • 对于 Windows,它对我来说非常完美,但其他答案中介绍的其他软件包却没有。
    【解决方案4】:

    经过一番深入研究,以下是我的发现:

    • RAR 不是免费的开放格式,归 RARLabs 所有。您必须先安装他们的 DLL 或 exe 才能使用 RAR。像 7zip 这样的一些程序可能已经包含了这个。
    • patool 是为其他外部压缩应用程序提供统一命令行作为包装器的应用程序。原生只能处理 TAR、ZIP、BZIP2 和 GZIP,无需外部支持。
    • pyunpack 是 Python 库,只能原生处理 zip,但提供到 patool 的接口。

    考虑到这一点,以下事情对我有用:

    • 确保已安装 7zip
    • pip install patool pyunpack

    然后使用它,

    import pyunpack
    
    pyunpack.Archive(archive_file).extractall(extract_dir)
    

    【讨论】:

      【解决方案5】:

      【讨论】:

      • 是否需要安装unrar.exe
      • 是的,根据文档,它需要能够找到 unrar.exe。
      • 关于rarfile.readthedocs.org/en/latest/api.html你需要在脚本中指定unrar的确切路径:-rarfile.UNRAR_TOOL = r"c:\python27\unrar.exe"
      • unrar.exe,认真的吗?
      【解决方案6】:

      此方法只需要安装 7zip。
      在 7zip 的每个系统上都能完美运行。
      根本不需要 python 包。

      import subprocess
      subprocess.run('7z x -oOutdir archive.rar')
      

      子进程模块是python自带的。

      【讨论】:

        猜你喜欢
        • 2011-12-10
        • 2015-09-10
        • 1970-01-01
        • 2011-09-01
        • 2021-01-15
        • 2022-06-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多