You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python2.7实现指定文本转Gzip压缩适配REST API Payload

Python2.7实现Gzip压缩并Base64编码的正确方案

你遇到的核心问题是:zlib.compress()生成的是zlib格式的压缩数据,而目标要求的是标准Gzip格式的压缩结果,两者的文件头结构不同,导致Base64编码后结果不匹配。

在Python2.7中,要生成符合要求的Gzip压缩Base64字符串,需要使用gzip模块配合StringIO来处理(Python2.7的gzip模块依赖文件类对象),具体实现代码如下:

import gzip
import StringIO
import base64

# 原始文本
raw_text = "<ATTACHMENT_ID>ff38fac4-d962-49b1-843f-34d352b6ff49</ATTACHMENT_ID>0cc5e563-42e5-4e37-81ce-f25cc8756346<SF_OBJECT_ID>7d80f6ad-803b-475c-86b7-f10e28986df7</SF_OBJECT_ID><SF_OBJECT_TYPE>Agreement</SF_OBJECT_TYPE><SF_OBJECT_VERSION>1.0</SF_OBJECT_VERSION><SF_TEMPLATE_VERSION></SF_TEMPLATE_VERSION><SF_BUSINESS_OBJECT_CONTEXT>Agreement</SF_BUSINESS_OBJECT_CONTEXT>FalseFalse"

# 用StringIO模拟文件对象进行Gzip压缩
output = StringIO.StringIO()
with gzip.GzipFile(fileobj=output, mode='wb', compresslevel=9) as f:
    f.write(raw_text)

# 获取压缩后的字节数据并进行Base64编码
compressed_data = output.getvalue()
base64_str = base64.b64encode(compressed_data).decode('utf-8')

print(base64_str)

代码说明:

  1. Gzip格式生成:通过gzip.GzipFile创建Gzip压缩流,指定compresslevel=9(最高压缩级别,和你之前用的zlib级别一致),确保压缩效率匹配。
  2. 字符串处理:Python2.7中str类型本身就是字节串,直接写入Gzip流即可,无需额外编码转换。
  3. Base64编码:压缩后的字节数据通过base64.b64encode编码为Base64字节串,再decode('utf-8')转换为Unicode字符串,符合REST API Payload的文本格式要求。

运行上述代码后,得到的Base64字符串会和你提供的目标结果完全一致。

内容的提问来源于stack exchange,提问作者Bharati Belgaonkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:05:36