Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python访问JSON文件,获取;“内存错误”;_Python_Json - Fatal编程技术网

使用Python访问JSON文件,获取;“内存错误”;

使用Python访问JSON文件,获取;“内存错误”;,python,json,Python,Json,我使用的是JSON数据集(reddit数据),数据大小为5GB。我的JSON数据块如下所示 {“subreddit”:“语言学习”,“家长id”:“t1_cn9nn8v”,“检索日期”:1425123427,“ups”:1,“作者天赋”css_类“:“镀金”:0,“作者天赋”文本“:“Lojban(N)”,“争议性”:0,“subreddit id”:“t5_2rjsc”,“编辑”:假,“分数隐藏”:假,“链接id”:“t3_2qulql”,“名称”:“t1_cnau2yv”,“创建日期”:“1

我使用的是JSON数据集(reddit数据),数据大小为5GB。我的JSON数据块如下所示

{“subreddit”:“语言学习”,“家长id”:“t1_cn9nn8v”,“检索日期”:1425123427,“ups”:1,“作者天赋”css_类“:“镀金”:0,“作者天赋”文本“:“Lojban(N)”,“争议性”:0,“subreddit id”:“t5_2rjsc”,“编辑”:假,“分数隐藏”:假,“链接id”:“t3_2qulql”,“名称”:“t1_cnau2yv”,“创建日期”:“1420074627”,“正文”:“utc”:“我和日本的Duolingo玩了一段时间,基本上如果你不够流利,你什么都学不到。\n\n正如下面所说,唯一真正存在的是中国人的技能。”,“id:“cnau2yv”,“杰出的”:null,“存档的”:false,“作者”:“Pennwisedom”,“分数”:1}

我正在使用python列出这些数据中的每个“subreddit”,但我得到了内存错误。 下面是我的python代码和错误

import json
data=json.loads(open('/media/RC_2015-01').read())
for item in data:
   name = item.get("subreddit")
   print name
回溯(最近一次呼叫最后一次): 文件“name_python.py”,第4行,在 data=json.load(open('/media/RC_2015-01').read()) 记忆者


我知道的是,我正在尝试加载非常大的数据,这就是我出现内存错误的原因。有人可以建议其他解决方法吗。

您需要使用迭代解析器,比如一次解析每条记录,而不是将整个文件加载到内存中

关于错误消息,请确保您的数据是有效的JSON,并且记录周围有方括号。此结构将正确解析

[
 {...},
 {...}
]
鉴于以下结构将引发“附加数据”异常

{....}
{....}

谢谢你,Jaco!!我正在使用以下代码,使用ijson,但出现了常见错误。JSONError(“其他数据”)你能帮我一下吗?>导入ijson file_name=“/media/RC_2015-01”,打开(file_name)作为file:parser=ijson。解析(file)作为前缀,事件,解析器中的值:if prefix==”subreddit“:print value查看我的更新答案,这表明您的数据文件不是有效的JSON。您的JSON是否以方括号开始和结束?