如何在Python中gzip一个字节数组?

Can*_*kel 3 python gzip bytearray python-requests

我有一个字节数组中的二进制数据,我想先gzip,然后通过请求发布。我发现了如何gzip文件,但找不到字节数组。那么,如何通过Python gzip一个字节数组呢?

moz*_*ozz 6

看一下zlibPython 的-module。

Python 3:- zlib模块

一个简短的例子:

import zlib
compressed_data = zlib.compress(my_bytearray)
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式再次解压缩数据:

decompressed_byte_data = zlib.decompress(compressed_data)
Run Code Online (Sandbox Code Playgroud)

Python 2:- zlib模块

一个简短的例子:

import zlib
compressed_data = zlib.compress(my_string)
Run Code Online (Sandbox Code Playgroud)

您可以通过以下方式再次解压缩数据:

decompressed_string = zlib.decompress(compressed_data)
Run Code Online (Sandbox Code Playgroud)

如您所见,Python 3使用字节数组,而Python 2使用字符串。

  • 对我来说,它需要一个字符串,而不是字节数组。.compressedData = zlib.compress(mystring)` (2认同)
  • @mgear那是因为您使用的是Python 2,它需要一个输入字符串-在Python 3中,该函数需要一个字节数组...我已经将此添加到了答案中。 (2认同)

Kla*_* D. 1

如果字节数组不太大而无法多次存储在内存中并被称为b,您可以:

b_gz = str(b).encode('zlib')
Run Code Online (Sandbox Code Playgroud)

如果您需要先进行解码,请查看decode()bytearray 的方法。

  • 好吧,这就是我的想法(我主要使用 Python 3)。您可以在帖子中为那些没有阅读“第一次尝试”评论的人添加注释。 (2认同)