为了账号安全,请及时绑定邮箱和手机立即绑定

如何压缩迭代器?

如何压缩迭代器?

红糖糍粑 2022-12-20 14:05:18
我有一个生成数据的迭代器,我想将其解压缩。import gziph = open('myfile.gz', 'rb')data = iter(lambda: h.read(1024), b'')gzip.decompress(data)我得到:Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "/usr/lib/python3.6/gzip.py", line 531, in decompress    with GzipFile(fileobj=io.BytesIO(data)) as f:TypeError: a bytes-like object is required, not 'callable_iterator'如何解压迭代器?数据无法加载到内存中。
查看完整描述

2 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

如何解压迭代器?

你不知道。gzip.decompress()不适用于任意迭代器。您需要将迭代器转换为字节流,以便gzip.decompress(). 我会先看看BytesIO.


查看完整回答
反对 回复 2022-12-20
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

import zlib


def unzip_iterable(data):

  decompressor = zlib.decompressobj(wbits=zlib.MAX_WBITS | 16)  # gzip format

  for chunk in data:

    yield decompressor.decompress(chunk)


h = open('myfile.gz', 'rb')

data = iter(lambda: h.read(1024), b'')


for chunk in unzip_iterable(data):

    print(len(chunk))


查看完整回答
反对 回复 2022-12-20
  • 2 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信