【发布时间】:2020-04-05 19:51:50
【问题描述】:
我在使用boto3 的iter_chunks() 方法从S3 读取的字节块解压缩时遇到问题。逐块解压文件的策略源自this issue。
代码如下:
dec = zlib.decompressobj(32 + zlib.MAX_WBITS)
for chunk in app.s3_client.get_object(Bucket=bucket, Key=key)["Body"].iter_chunks(2 ** 19):
data = dec.decompress(chunk)
print(len(chunk), len(data))
# 524288 65505
# 524288 0
# 524288 0
# ...
此代码最初打印出65505 的值,随后为每次后续迭代打印 0。我的理解是这段代码应该解压缩每个压缩的块,然后打印未压缩版本的长度。
我有什么遗漏吗?
【问题讨论】:
-
你能确认压缩块的长度不是零吗?即
print(len(chunk), len(data))并澄清它是 gzip 还是 zlib ?
标签: python amazon-s3 gzip boto3 zlib