以utf-8格式读取文件时的内存错误

时间:2012-03-12 15:54:29

标签: python json utf-8

我有一个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)

上面代码的问题是它不会执行,内核是“杀死”程序。

我觉得这个问题很奇怪,因为没有编码就行了,当我尝试用编码读取它时需要大量的内存

谁能告诉我这里发生了什么?

1 个答案:

答案 0 :(得分:4)

您可以尝试正常打开文件并使用带有encoding参数的simplejson.load(),而不是先将整个文件读入内存:

with open("stem.json", "r") as f:
    data = simplejson.load(f, encoding="utf-8")

正如我在上面的评论中所说,我认为真正的解决方案是使用不同的持久性后端,而不是序列化为JSON。