Python lmza.LMZADecompressor() 返回空字节

Python lmza.LMZADecompressor() returning null byte

我压缩了字节,当我尝试解压缩时它给出了一个空字节。

import lzma
comp = lzma.LZMACompressor()
decomp = lzma.LZMADecompressor()
a= comp.compress(b'alpha')
print(a)
b = decomp.decompress(a)
print(b)

这是结果。

b'\xfd7zXZ\x00\x00\x04\xe6\xd6\xb4F\x02\x00!\x01\x16\x00\x00\x00t/\xe5\xa3'
b''

为什么会出现这种情况,如何解决。

那是因为 comp.compress 没有 return 完整的压缩字节串。 您必须将 comp.flush() 的结果附加到 a.

import lzma
comp = lzma.LZMACompressor()
decomp = lzma.LZMADecompressor()
a= comp.compress(b'alpha') + comp.flush()
print(a)
b = decomp.decompress(a)
print(b)