首页 > 解决方案 > Python 3.7 zlib 解压后的大小小于压缩后的大小

问题描述

我写了一个小的python代码,它应该解压缩一个~180Mb的大二进制文件。问题是它只能解压缩大约 50Mb。我想知道是否有人以前遇到过类似的奇怪问题,并找到了解决方案。

import zlib, sys
text = open('REG_E.rzp','rb').read()
print(sys.getsizeof(text))
# 187424785


decompressed = zlib.decompress(text)
print(sys.getsizeof(decompressed))
# 50001

附加信息:第一个解压缩的 50Mbytes 是正确的,并且在十六进制编辑器中可读。所以我想知道,一次可以解压缩多少 zlib 是否有限制?我没有收到任何错误消息,所以我对此一无所知。

标签: python-3.xzlib

解决方案


您似乎没有正确关闭文件,因此文件可能未完全写入:

import zlib, sys
with open('REG_E.rzp','rb') as f:
    text = f.read()
    print(sys.getsizeof(text))

decompressed = zlib.decompress(text)
print(sys.getsizeof(decompressed))

with open('cecomp.bin','wb') as f:
    f.write(decompressed)

recomp = zlib.compress(decompressed)
print(sys.getsizeof(recomp))
with open('recomp.bin','wb') as f:
    f.write(recomp)

添加with块可确保您关闭文件(这也确保您实际完成写入磁盘)。


推荐阅读