【问题标题】:Accessing JSON file using Python , getting "Memory Error"使用 Python 访问 JSON 文件,出现“内存错误”
【发布时间】:2015-12-29 22:46:27
【问题描述】:

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

{"subreddit":"languagelearning","parent_id":"t1_cn9nn8v","re​​trived_on":1425123427,"ups":1,"author_flair_css_class":"","gilded":0,"author_flair_text":" Lojban (N)","controversiality":0,"subreddit_id":"t5_2rjsc","edited":false,"score_hidden":false,"link_id":"t3_2qulql","name":"t1_cnau2yv","created_utc ":"1420074627","downs":0,"body":"我玩了一段时间的日本 Duolingo,基本上如果你不熟悉 Fluency,你将学不到任何东西。\n\n正如所说下面,唯一真正存在的是Chineseskill。","id":"cnau2yv","distinguished":null,"archived":false,"author":"Pennwisedom","score":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

Traceback(最近一次调用最后一次): 文件“name_python.py”,第 4 行,在 data=json.loads(open('/media/RC_2015-01').read()) 内存错误

所知道的是,我正在尝试加载非常大的数据,这就是我收到内存错误的原因。任何人都可以建议任何其他解决方法。

【问题讨论】:

    标签: python json


    【解决方案1】:

    您需要使用像ijson 这样的迭代解析器来一次解析每条记录,而不是将整个文件加载到内存中。

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

    [
     {...},
     {...}
    ]
    

    而以下结构将引发“附加数据”异常

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

    【讨论】:

    • 谢谢贾科!!我正在使用以下代码,使用 ijson 但收到错误 raise common.JSONError('Additional data') 你能帮我解决这个问题吗? >import ijson file_name="/media/RC_2015-01" with open(file_name) as file: parser = ijson.parse(file) for prefix, event, value in parser: if prefix=="subreddit": print value跨度>
    • 查看我更新的答案,它表明您的数据文件不是有效的 JSON。您的 JSON 是否以方括号开头和结尾?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    相关资源
    最近更新 更多