我在名为“行”的列表中有一系列字符串,我将它们压缩如下:
import bz2
compressor = bz2.BZ2Compressor(compressionLevel)
for l in lines:
compressor.compress(l)
compressedData = compressor.flush()
decompressedData = bz2.decompress(compressedData)
当compressionLevel 设置为8 或9 时,这工作正常。当它是 1 到 7(含)之间的任何数字时,最后一行会失败并显示 IOError: invalid data stream。如果我使用顺序解压缩器,也会发生同样的情况。但是,如果我将字符串连接成一个长字符串并使用一次性压缩器功能,它可以正常工作:
import bz2
compressedData = bz2.compress("\n".join(lines))
decompressedData = bz2.decompress(compressedData)
# Works perfectly
您知道为什么会这样以及如何使其在较低的压缩级别下工作吗?