首页 > 解决方案 > 使用 Python 获取大型 JSON 文件中的最后一个元素

问题描述

  1. 我想获取JSON 文件中的最后一个元素
  2. 这个文件非常大,所以我不想将它加载到内存中(使用 json.loads)
  3. 很高兴使用 ijson 或 jsonparser 之类的东西,但不知道如何使用这些解析器。

因此,假设我的 JSON 文件如下所示:

{
"1000045901": "John",
"1000045902": "Ben"
}

我想编写python代码来帮助我获得最后一项(“1000045902”:“Ben”)——包括它的键和它的值——所有这些都不需要将文件加载到内存中

我最接近的方法是使用 ijson:

import ijson

key = '-'

with open('customerAccounts.json', 'rb') as file:
  for prefix, event, value in ijson.parse(file):
    if prefix == '' and event == 'end_map'
     print ([key, value][-1])

然而,我的输出返回 end_map 值,即None

标签: pythonpython-3.x

解决方案


这应该这样做:

import ijson

with open('customerAccounts.json', 'rb') as file:
  for key, value in ijson.kvitems(file, ''):
    pass
  print(key, value)

key这里value是迭代过程中的最后一个值。还有其他方法可以更快地从迭代中获取最新值例如,使用大小为 1 的双端队列),但应该这样做。


推荐阅读