python - 获取 gzip.BadGzipFile:解压缩收到的消息时不是 gzip 压缩文件(b“b”)
问题描述
我有一个名为的 html 文件75842.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 编码,它们仅将数据扩展几十个百分点,而不是那里的一个因素。
推荐阅读
- google-apps-script - 除非我复制它,否则 Google 表格脚本不起作用
- c - 特定标点符号的 C 计数器
- python - 使用 Python 3 从表中选择
- java - Java8中的压缩类空间与堆成正比吗?
- service - Angular 8 accountService 在 loginService 中未定义
- sqlite - 如何检查多个列的值,但如果该列为空,则不要关心它
- ajax - VUEJS TypeError: $.ajax(...).success 不是函数
- scikit-learn - can't install specific old version of sklearn to解决pyadio分析库中不兼容的“SVC属性错误”
- android - 更新 Android 库会导致我的代码出错吗?
- c# - 基于另一个键的 XML 分组