我被困zlib
在一个项目中使用带有模块版本 1.1.3 的 Jython 2.2.1。我需要下载大量压缩数据,对其进行处理,然后将其写入数据库。我想避免在内存中有多个数据副本,所以我将其解压缩为流。
使用 Python 2.7.2,我已经能够将 gzip 流解压缩为:
from zlib import decompressobj, MAX_WBITS
f = open('stream.gz', 'rb') # in real life, this stream comes from urllib2
gunzipper = decompressobj(16+MAX_WBITS)
data = ''
for chunk in iter(lambda: f.read(BLOCK_SIZE), ''):
data += gunzipper.decompress(chunk)
#done
但是,在 Jython 2.2.1 下,相同的代码在创建以下代码时会出错decompressobj
:
.\jythonLib.jar\lib/zlib$py.class", line 89, in __init__
ValueError: Invalid initialization option
显然,标头偏移技巧不适用于这个旧版本的zlib
.
我是 Jython 的 Java 方面的新手,想知道是否有办法使用 Jython 中的 Java 类解压缩 gzip 流?或者也许有一种方法可以诱使zlib 1.1.3
接受 gzip 标头?
欢迎任何其他潜在的解决方案。