我有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)
我的目标是将它们加载到pandas数据帧中,以执行一些搜索操作。
问题是,这种方法需要花费大量时间来读取文件。
有没有其他最佳方法可以实现这一点?
您只能将json_file
直接传递给ijson.parse一次,而不是从中读取单独的行。如果您的文件具有多个顶级JSON值,则可以使用multiple_value=True
选项(请参阅此处了解描述(。
还要确保您使用的是最新的ijson,并且yajl2_c
后端是正在使用的后端(在ijson 3中,您可以通过查看ijson.backend
来查看选择了哪个后端(。有关后端的信息,请查看此处。
您可以使用Pandas内置函数
Pandas.read_json((
文档在这里