【发布时间】:2015-05-18 08:00:18
【问题描述】:
我正在尝试一步将对象写入 gzip 压缩的 json 文件(最小化代码,并可能节省内存空间)。我最初的想法(python3)是这样的:
import gzip, json
with gzip.open("/tmp/test.gz", mode="wb") as f:
json.dump({"a": 1}, f)
但这失败了:TypeError: 'str' does not support the buffer interface,我认为这与未编码为字节的字符串有关。那么这样做的正确方法是什么?
我不满意的当前解决方案:
以文本模式打开文件即可解决问题:
import gzip, json
with gzip.open("/tmp/test.gz", mode="wt") as f:
json.dump({"a": 1}, f)
但是我不喜欢文本模式。在我看来(也许这是错误的,但this 支持),文本模式用于修复行尾。这应该不是问题,因为 json 没有行尾,但我不喜欢它(可能)弄乱我的字节,它(可能)速度较慢,因为它正在寻找要修复的行尾,并且(最差最重要的是)我不明白为什么行尾可以解决我的编码问题?
【问题讨论】:
-
其实我才意识到gzip-part和这一切无关,我应该重写问题
标签: python-3.x