我正在尝试读取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信息遍历第一个打印的语句时,它非常不稳定,但第二个语句不是。
答案 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。