1

我正在尝试读取 JSON 文件,确定“文本”字段中有多少单词,将该信息添加为新字段“长度”,然后将新的 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)

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

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

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

4

2 回答 2

3

以您编写文件的方式,您将只有一个 HUGE 行。

# 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")
于 2013-06-06T17:44:08.540 回答
0

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

于 2021-02-06T02:35:48.010 回答