首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PyLZMA解压缩

用PyLZMA解压缩
EN

Stack Overflow用户
提问于 2012-06-12 21:41:44
回答 1查看 4.6K关注 0票数 2

我使用这个脚本压缩我的文件

代码语言:javascript
复制
import pylzma, struct
i = open(path+fileName,'rb')
o = open(path+zipName+'.zip','wb')
data = i.read()
c = pylzma.compressfile(data, eos=1)
result = c.read(5)
result += struct.pack('<Q', len(data))
o.write(result + c.read())
i.close()
o.close()

我使用这个方法,如PyLZMA文档中所示,因为它允许7zip或lzma.exe读取我的文件。使用7 7zip解压缩很好,但当我使用PyLZMA时它就不起作用了。我用这个:

代码语言:javascript
复制
i = open(path+name+'.zip', 'rb')
o = open(path+name, 'wb')
data = i.read()
u = pylzma.decompress(data)
o.write(u)

它在pylzma.decompress上停止,我收到以下错误:

TypeError:解压缩时出错:1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-15 06:46:42

如果我正确地读取了文档 (我在安装PyLZMA时遇到了问题,所以无法验证),compress()会输出一个decompress()可以处理的字符串。

但是,为了使压缩字符串与其他实用程序兼容,有必要在前5个字节和其他压缩数据之间插入8字节的长度。

因此,如果您想使用PyLZMA解压缩数据,我怀疑您需要手动删除8字节长度字段(最快的方法可能是打开输入文件,读取5个字节,跳过8,然后读取文件的其余部分)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11005301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档