【发布时间】:2012-03-12 15:54:29
【问题描述】:
我有一个 1GB 的 json 文件,我想在 python 中使用 simplejson 解析它。所以我写了一个简单的代码如下,它工作正常
import simplejson
f=open('stem.json','r')
content=f.read()
data=simplejson.loads(content)
上面代码的问题是它没有读取'utf-8'格式的数据
所以我重写了如下代码
import simplejson
import codecs
f=codecs.open('stem.json','r',encoding='utf-8')
content=f.read()
data=simplejson.loads(content)
上述代码的问题是它不会执行,内核正在“杀死”程序。
我觉得这个问题很奇怪,因为没有编码它可以工作,当我尝试用编码读取它时会占用大量内存
谁能告诉我这里发生了什么?
【问题讨论】:
-
1GB 的 JSON?机会是不同的持久性机制在这里更合适。使用数据库怎么样?
MemoryError仅表示您的内存不足。 -
是的,但是为什么只有当我使用不同的编码时才会出现 MemoryError 感谢您的回复
-
将字符串解码为
unicode对象会消耗额外的内存,这并不奇怪。 -
是的,我可能不得不改变读取文件的方式,但我不确定如何使用编码来实现
-
哪一行导致内存不足?你可以直接从文件中加载 JSON 而不是使用中间字符串吗?