使用 py7zlib 解压 7z 存档会给出 *** ValueError: data error during decompression during decompression

Posted

技术标签:

【中文标题】使用 py7zlib 解压 7z 存档会给出 *** ValueError: data error during decompression during decompression【英文标题】:Decompressing 7z archive using py7zlib gives *** ValueError: data error during decompression 【发布时间】:2013-11-26 13:51:43 【问题描述】:

我的代码如下(来自这里:Example of how to use PyLZMA)

import py7zlib
...
#filename.__class__ is <class 'django.core.files.uploadedfile.InMemoryUploadedFile'>
archive = py7zlib.Archive7z(filename)
data = archive.getmember(archive.getnames()[0]).read()

我得到的错误是:

*** ValueError: data error during decompression

我正在测试的存档是从制造商网站下载的 7z 压缩驱动程序。我还使用 7zip 创建了一个 7z 存档进行测试,但我得到了相同的结果。

【问题讨论】:

根据经验,最好先尝试使用 py7zlib 进行压缩,然后“立即”解压缩。这将使您了解如何使用代码,我没有使用 py7zlib 执行此操作 - 而是使用其他库 我遇到了同样的问题。你能弄清楚吗? 我只是尝试重新创建问题,但是没有原始文件,我无法复制此问题。我刚刚尝试了一个自生成的 7z 文件,我得到了py7zlib.FormatError: not a 7z file。使用驱动程序文件,它似乎可以工作。 【参考方案1】:

我建议你先打开你的文件,然后使用'py7zlib' 包。我已使用此方法成功读取文件。

content=open(filename,"rb")
archive = py7zlib.Archive7z(content)
data = archive.getmember(archive.getnames()[0]).read()

【讨论】:

以上是关于使用 py7zlib 解压 7z 存档会给出 *** ValueError: data error during decompression during decompression的主要内容,如果未能解决你的问题,请参考以下文章

命令行创建两个文件夹的 7z 存档和一个文件以自解压到指定位置

在 7z 单文件存档中随机查找

仅使用 7z 压缩文件而不保留路径

7z.001,7z.002这样的文件如何解压

如何使用 Gin 在 HTTP 服务器中动态生成 zip/7z 存档?

如何检查 InputStream 7Z 存档文件是不是受密码保护?