【问题标题】:How to unrar files如何解压文件
【发布时间】:2021-03-15 08:54:00
【问题描述】:

我正在尝试解压缩用户在 django Web 应用程序中上传的文件。我经历了不同的方法,但没有一个对我有用。 以下方法在我的本地操作系统(Ubuntu 18.04)中运行良好,但在服务器中不起作用。 我正在使用 Python 3.6。

  1. import rarfile - 这里的“rarfile”是从 python3.6/site-packages/rarfile 导入的。它给出了这个错误-

    bsdtar: Error opening archive: Failed to open '--'

    按照here 建议的步骤,我安装了“unrar”。

  2. from unrar import rarfile - 这里是从 python3.6/site-packages/unrar/ 导入的

    但这给出了错误 - LookupError: Couldn't find path to unrar library.

    所以为了解决这个问题,我按照here提到的步骤,创建了UnRaR 可执行文件,并在我的环境中设置路径。这在本地工作正常,但无法理解如何在“生产环境”中做同样的事情。

  3. import patoolib - 从 patool 导入

    我还尝试实现 patool,它在本地运行良好但在生产环境中运行良好,我收到此错误 - patoolib.util.PatoolError: could not find an executable program to extract format rar; candidates are (rar,unrar,7z),

这已成为我的应用程序中的一个大障碍,谁能解释一下如何解决这个问题。

rarfile 的代码 sn-p -

import rarfile
.....        
rf = rarfile.RarFile(file_path)
rf.extractall(extract_to_path)

patool 的代码 sn-p -

import patoolib
...
patoolib.extract_archive(file_path, outdir=extract_to_path)

【问题讨论】:

    标签: python unrar


    【解决方案1】:

    Patool 是一个很好的 Python 库,它简单易用。一个简单的例子在这里:

    pip install patool
    

    使用pip install patool安装库

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

    现在,在您的情况下,问题可能是路径中没有您的 unraring 工具,表明无法从命令行调用它(这正是 patool 所做的)。只需将你的 rar 文件夹放到路径中就可以了,或者给出 rar 文件的绝对路径。

    【讨论】:

    • 感谢您的回复。据我了解, patool 从命令行调用 unraring 工具。我在设置这个“unraring tool”时感到困惑。你能解释一下那部分吗?或者一个分步指南的链接,会有很大帮助!
    猜你喜欢
    • 2017-01-19
    • 1970-01-01
    • 2016-11-26
    • 2015-11-05
    • 2021-09-21
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多