gpt4 book ai didi

python 临时文件 + gzip + json 转储

转载 作者:行者123 更新时间:2023-12-05 03:54:51 24 4
gpt4 key购买 nike

我想使用 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 对象没有文本模式。所以我会创建一个包装器作为文件句柄对象传递。这个包装器从 json 中获取数据并将其编码为二进制文件以写入 gzip 文件:

class wrapper:
def __init__(self,gzout):
self.__handle = gzout
def write(self,data):
self.__handle.write(data.encode())

像这样使用:

json.dump(data, wrapper(gzout))

每次json.dump要写入对象时,调用wrapper.write方法,将文本转换为二进制并写入二进制流

(io 模块中的一些内置包装器也可能适合,但这个实现很简单并且有效)

关于python 临时文件 + gzip + json 转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60661119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com