【发布时间】:2015-05-09 16:01:54
【问题描述】:
我在内存中有一块 CSV 数据 bz2 压缩数据
compressed = load_from_network_service(...)
我想遍历解压缩的行流。
for line in bz2_decompress_stream(compressed):
...
有这样的功能吗?
原则上我可以写入磁盘然后使用bz2.BZ2File 读入,这似乎只是想消耗一个文件名
with open('tmp', 'w') as f:
f.write(compressed)
with bz2.BZ2File('tmp') as f:
for line in f:
...
但是,对于我当前的应用程序来说,磁盘 I/O 非常重要,所以这很痛苦。
大概bz2.BZ2Decompressor 对象在这里可能会有所帮助。我的经验是我给它我的压缩数据,它给我整个解压缩的结果;它似乎没有流式传输。也许这是我数据的限制?
【问题讨论】:
-
"filename" 只是误导,你也可以给它一个文件对象。来自文档:“如果文件名是 str 或字节对象,则直接打开命名文件。否则,文件名应该是文件对象,将用于读取或写入压缩数据。”
标签: python compression bzip2