python - 使用 Python 获取大型 JSON 文件中的最后一个元素
问题描述
- 我想获取JSON 文件中的最后一个元素
- 这个文件非常大,所以我不想将它加载到内存中(使用 json.loads)
- 很高兴使用 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
解决方案
这应该这样做:
import ijson
with open('customerAccounts.json', 'rb') as file:
for key, value in ijson.kvitems(file, ''):
pass
print(key, value)
key
这里value
是迭代过程中的最后一个值。还有其他方法可以更快地从迭代中获取最新值(例如,使用大小为 1 的双端队列),但应该这样做。
推荐阅读
- java - 如何在 Java 中修复此错误 - 线程“main”中的异常 java.lang.SecurityException:Manifest 主要属性的签名文件摘要无效
- python - 您如何在较短的列表上完全迭代较大的列表
- javascript - 谷歌甜甜圈图
- php - 如何在 PHP 中使用 Google My business API 发布问题的新答案
- sockets - 如何使用比特币中的套接字编程从比特币节点获取 getaddr 的响应?
- java - HikariPool 在启动时建立 3 个活动连接并且从不放弃它们是否正常?
- magento2 - 如何在magento 2中付款后修复Error return url错误
- regex - 如何在 GIT reflog 中的 --grep 中使用 REGEX?
- c++ - 覆盖 Qt 的 mousePressEvent 会中断 moveEvent 参数
- highcharts - 如何使 highcharts 以 hh:mm:ss 格式显示日期,而不是时间戳?