我有一个名为75842.html
的 html 文件,我正在通过执行以下操作使用 gzip 压缩该文件:
with open('75842.html', 'rb') as f:
body_compressed=gzip.compress(f.read())
body_compressed
是一个<class 'bytes'>
对象。
我无法通过 SQS 发送字节,消息正文需要是一个字符串。所以我在发送文件时定义MessageBody=str(body_compressed)
。
在另一台服务器上阅读消息时,我想使用以下方法解压缩并保存:
with open('75842_decompressed.html', 'w') as f:
f.write(gzip.decompress(str.encode(body)))
然后我收到错误消息gzip.BadGzipFile: Not a gzipped file (b"b'")
。可能是因为文件以 b' 开头。但是,我不确定如何解决它。任何帮助都非常感谢。
使用str()
是一个糟糕的主意。您最终会使数据大小增加三倍,从而消除了压缩的好处!你看过str()
前后的长度吗?
您可以发送的数据有什么限制?如果只能发送可打印字符,则可以使用 Base-64 或 Base-85 编码,它们只能将数据扩展几十%,而不是其中的一个因素。