0

我有 16 个 JSON 文件,每个文件大小约为 14GB。我尝试了以下方法逐行阅读它们。

with open(file_name, encoding="UTF-8") as json_file:
cursor = 0
for line_number, line in enumerate(json_file):
    print ("Processing line", line_number + 1,"at cursor index:", cursor)
    line_as_file = io.StringIO(line)
    # Use a new parser for each line
    json_parser = ijson.parse(line_as_file)
    for prefix, type, value in json_parser:
        #print ("prefix=",prefix, "type=",type, "value=",value,ignore_index=True)
        dfObj = dfObj.append({"prefix":prefix,"type":type,"value":value},ignore_index=True)
    cursor += len(line)

我的目标是将它们加载到熊猫数据框中以执行一些搜索操作。

问题是这种方法需要花费大量时间来读取文件。

有没有其他最佳方法来实现这一目标?

4

2 回答 2

0

您只能直接向 ijson.parse 传递json_file一次,而不是从中读取单独的行。如果您的文件有多个顶级 JSON 值,那么您可以使用该multiple_value=True选项(请参阅此处了解说明)。

还要确保您使用的是最新的 ijson,并且yajl2_c后端是正在使用的(在 ijson 3 中,您可以通过查看来查看选择了哪个后端ijson.backend)。有关后端的信息,请查看此处

于 2020-04-09T14:40:14.357 回答
0

你可以使用 Pandas 内置函数
pandas.read_json()
文档在这里

于 2020-05-15T17:41:21.743 回答