【问题标题】:How to extract 7z zip file in Python 2.7.3 version如何在 Python 2.7.3 版本中提取 7z zip 文件
【发布时间】:2018-08-24 15:00:47
【问题描述】:

如何在 python 中提取 7z zip 文件。请有人告诉我是否有任何库。

我已经在 python 2.7.3 版本中安装了 libarchive 库。但我无法使用那个库。

【问题讨论】:

  • 请提供有关该问题的更多详细信息。为什么你不能使用图书馆?
  • libarchive 库安装在站点包下。例如C:\Python27\Lib\site-packages\libarchive-0.4.3-py3.2.egg\libarchive Archive.reader 模块不存在。如何使用精确类
  • 在这里查看我在 ScanCode 中提取码中所做的操作:github.com/nexB/scancode-toolkit/blob/… 这是 Windows/Linux/Mac 命令行 7zip 的包装器

标签: python extract 7zip


【解决方案1】:

您可以使用PyLZMApy7zlib 库来提取7z 文件或尝试使用python subprocess 模块执行shell 脚本来提取zip 文件。

【讨论】:

【解决方案2】:

我在我的 C++ 项目中使用像 C:\Program Files\7-Zip\7z.exe x <filename> 这样的命令。你可以像这样在 Python 中运行它:

import subprocess
subprocess.call(r'"C:\Program Files\7-Zip\7z.exe" x ' + archive_name + ' -o' + folder_name_to_extract)

或 32 位版本:

subprocess.call(r'"C:\Program Files (x86)\7-Zip\7z.exe" x ' + archive_name + ' -o' + folder_name_to_extract)

【讨论】:

    【解决方案3】:

    根据Python doc (about the subprocess),您可能更愿意使用推荐的函数run(例如在这个例子中)。

    from subprocess import run
    run('C:\\Program Files\\7-Zip\\7zG.exe x'+ archive_name + ' -o' + folder_name_to_extract)`
    

    PS0 : 建议,不要忘记在完整路径中转义字符;它在 Windows 下特别有用。否则操作系统找不到 7zip(或其他程序)。

    PS1 : 显然,cmets 很难写... 显示不一样(就像将所有文本组合在一行中)并且通过触摸输入,帖子将被发布(未完成)。 stackoverflow.com 的系统是错误的,因为我只想添加几行而不发布它。也因为不,此刻,我还没有写完(这篇文章)。

    【讨论】:

    • 这对我不起作用,存档的内容从未提取到输出文件夹中。并使用subprocess.call 我得到TypeError: bufsize must be an integer
    【解决方案4】:

    这在 Windows 中对我有用。您要拍摄的字符串是这样的:

    C:/Egain_ETL/7-Zip/7z.exe e "C:/Egain_ETL/EG_DATA_EXTRACT_2017-11-25 09-45-10-627.7z" -p"Dev@123" -o"C:/Egain_ETL/"
    

    请注意对 exe 和选项的调用未加引号,其他所有内容均用双引号引起来。

    示例代码

    import subprocess
    
    Z_Location = 'C:/Egain_ETL/7-Zip/7z.exe'
    Extract_File = 'C:/Egain_ETL/EG_DATA_EXTRACT_2017-11-25 09-45-10-627.7z'
    Extract_PW = 'Dev@123'
    Extact_Folder = 'C:/Egain_ETL/'
    
    Extract_Target = Z_Location + ' e ' + '"' + Extract_File + '"' + ' -p' + '"' + Extract_PW + '"' + ' -o' + '"' + Extact_Folder + '"'
    
    subprocess.run(Extract_Target)
    

    【讨论】:

      【解决方案5】:

      !apt-get install p7zip-full !p7zip -d file_name.tar.7z

      试试上面的步骤

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-29
        • 1970-01-01
        • 2017-04-08
        • 1970-01-01
        • 2017-10-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多