我想使用python3(3.5)将非常大的字典转储到一个压缩的json文件中
import gzip
import json
import tempfile
data = {"verylargedict": True}
with tempfile.NamedTemporaryFile("w+b", dir="/tmp/", prefix=".json.gz") as fout:
with gzip.GzipFile(mode="wb", fileobj=fout) as gzout:
json.dump(data, gzout)
但是我犯了这个错误
Traceback (most recent call last):
File "test.py", line 13, in <module>
json.dump(data, gzout)
File "/usr/lib/python3.5/json/__init__.py", line 179, in dump
fp.write(chunk)
File "/usr/lib/python3.5/gzip.py", line 258, in write
data = memoryview(data)
TypeError: memoryview: a bytes-like object is required, not 'str'
有什么想法吗
Gzip
对象没有文本模式。因此,我将创建一个包装器作为filehandle对象传递。此包装器从json获取数据,并将其编码为二进制,以写入gzip文件:这样使用:
每当
json.dump
想要写入对象时,就会调用wrapper.write
方法,该方法将文本转换为二进制并写入二进制流(来自
io
模块的一些内置包装器可能也适合,但此实现简单且有效)相关问题 更多 >
编程相关推荐