Trying to decode gzip compressed and base64 encoded data to a readable format in Python3.4.
import base64
import zlib
original_data = '...jU2X0NCQ19TSEEAAAABAAA=' #Data cut short.
decoded64 = base64.b64decode(original_data) #format:b'\x16xe\x94...\xae\x9a\...'
final_decoded = zlib.decompress(decoded64)
print(final_decoded)
Been getting: "Error -2 while preparing to decompress data: inconsistent stream state." Not sure what I'm doing wrong.
解决方案
zlib successfully decompresses data that it has compressed previously:
>>> data = b'data'
>>> import zlib
>>> compressed = zlib.compress(data)
>>> import base64
>>> original_data = base64.b64encode(compressed).decode()
>>> zlib.decompress(base64.b64decode(original_data))
b'data'
zlib fails to decompress (with the default settings) gzip data:
>>> import gzip
>>> gzipped_data = base64.b64encode(gzip.compress(data)).decode()
>>> gzipped_data != original_data
True
>>> print(zlib.decompress(base64.b64decode(gzipped_data)))
Traceback (most recent call last):
File "", line 1, in
zlib.error: Error -3 while decompressing data: incorrect header check
>>> gzip.decompress(base64.b64decode(gzipped_data))
b'data'
该博客讨论了在Python 3.4中尝试解压缩并解码Base64编码的数据时遇到的问题。作者指出,使用zlib库解压缩之前用zlib压缩的数据可以成功,但当尝试解压缩gzip压缩的数据时,会遇到错误提示'Error-2 while preparing to decompress data: inconsistent stream state.'。解决方案是使用gzip库来解压缩由gzip压缩并Base64编码的数据。

被折叠的 条评论
为什么被折叠?



