在 Python 2.7 中解压缩 zip 字符串

jpo*_*pou 5 python zlib python-2.7

我正在尝试在 Python 2.7 中解压缩 byte64 编码的字符串。

我可以通过在命令行中运行以下命令来验证我的字符串是否有效:

echo -n "MY_BASE64_ENCODED_STRING" | base64 -d | zcat
Run Code Online (Sandbox Code Playgroud)

但是,如果我在 Python2.7 中运行它:

b64_data = 'MY_BASE64_ENCODED_STRING'
text_data = zlib.decompress(base64.b64decode(b64_data))
Run Code Online (Sandbox Code Playgroud)

我得到一个例外:

解压缩数据时出现错误-3:标头检查不正确

我应该向 zlib.decompress 传递额外的参数以使其工作吗?

Rya*_*n P 5

正如评论中所述,您的数据采用 gzip 格式,而不仅仅是 zlib 压缩数据。在Python 2.7中,可以使用GzipFilewithStringIO来处理字符串:

>>> from gzip import GzipFile
>>> from StringIO import StringIO
>>> from base64 import b64decode
>>> data = 'H4sIAEm2algAAytJLS7hAgDGNbk7BQAAAA=='
>>> GzipFile(fileobj=StringIO(b64decode(data))).read()
'test\n'
Run Code Online (Sandbox Code Playgroud)