在python中编写后,加载和读取JSON文件非常慢

时间:2013-06-06 17:14:07

标签: python json

我正在尝试读取JSON文件,确定“text”字段中有多少单词,将该信息添加为新字段“length”,并将新JSON对象写入文件。我用以下代码完成了这个:

import json

with open("file_read.json", "r") as review_file, open(
    "file_write.json", "w") as review_write:
    for line in review_file:
        review_object = json.loads(line)
        review_object["length"] = len(review_object["text"].split())
        json.dump(review_object, review_write)

原始文件超过200mb,但我可以用Vim查看它;但是,我写的文件只有3mb大,如果加载的话需要很长时间才能加载。此外,即使我只读取第一个JSON对象,也存在问题。写完文件后我尝试了以下内容:

with open("file_write", "r") as review_file:
    print review_file.readline()
    print("abcd123")

我正在使用带有python模式的Vim,当我使用JSON信息遍历第一个打印的语句时,它非常不稳定,但第二个语句不是。

2 个答案:

答案 0 :(得分:0)

您编写文件的方式只有一条巨大的线条。

# example
json.dump([1,2,3], fp)
json.dump({"name": "abc"}, fp)
json.dump(33, fp)
# content of file
# [1, 2, 3]{"name": "abc"}33

这可以解释为什么阅读速度太慢:它必须一次加载~200mb的文本。将它加载为json也可能会失败。

要解决此问题,您可以改为使用:

fp.write(json.dumps(review_object) + "\n")

答案 1 :(得分:0)

我也有同样的问题。当我处理文件 JSON 64MB 时。我需要 9 小时的处理时间。它非常缓慢。 这是我提高处理速度的解决方案。 B1:我将文件从 JSON 更改为 TXT。 B2:我在文本文件中更改了我的处理算法。 B3:文本文件内容正确后。我请求将文件从文本更改为 JSON。