python3 -- json档案处理

import json

处理JSON文件通常涉及读取、解析和写入JSON数据的过程。下面是一些在Python中处理JSON文件的常用方法:
1. 读取JSON文件:
使用Python内置的json模块可以轻松读取JSON文件。首先,需要导入json模块并打开文件,然后使用json.load()方法将JSON数据加载到Python对象中。

import json  
with open('example.json') as file:  
data = json.load(file)
1. 解析JSON数据:

一旦将JSON数据加载到Python对象中,就可以使用Python的语法对其进行处理。例如,可以访问嵌套的字典、列表和键值对等。

# 访问嵌套的字典  
name = data['person']['name']  
age = data['person']['age']  
# 访问列表  
scores = data['scores']  
score_1 = scores[0]  
# 遍历嵌套的字典和列表  
for student in data['students']:  
print(student['name'])  
print(student['age'])  
print(student['scores'])
1. 修改JSON数据:

可以根据需要对JSON数据进行修改。可以修改特定的键值对,添加新的键值对或删除现有的键值对。这里演示如何添加新的键值对。

data['person']['email'] = 'example@example.com'
1. 写入JSON文件:

使用json.dump()方法将修改后的Python对象写入JSON文件。同样需要使用Python内置的open()函数打开文件,指定写入模式,并使用json.dump()方法将数据写入文件。

with open('output.json', 'w') as file:  
json.dump(data, file)

这些是处理JSON文件的基本步骤。根据你的具体需求,可能需要更复杂的逻辑来处理更复杂的JSON结构。

实战:
假设我有下面这份fio的json结果文档,叫做fio.json好了,我对其进行解析,抓我需要的write的IOPS和BW的结果

{"fio version" : "fio-3.1","timestamp" : 1696925985,"timestamp_ms" : 1696925985515,"time" : "Tue Oct 10 16:19:45 2023","jobs" : [{"jobname" : "128k_write_mix0_num1_iodepth64","groupid" : 0,"error" : 0,"eta" : 0,"elapsed" : 301,"job options" : {"name" : "128k_write_mix0_num1_iodepth64","filename" : "/dev/nvme0n1","ioengine" : "libaio","direct" : "1","rw" : "write","rwmixread" : "0","bs" : "128k","numjobs" : "1","iodepth" : "64","runtime" : "300","time_based" : "1","write_iops_log" : "./1010/128k_write_mix0_num1_iodepth64","write_bw_log" : "./1010/128k_write_mix0_num1_iodepth64","log_avg_msec" : "1000"},"read" : {"io_bytes" : 0,"io_kbytes" : 0,"bw" : 0,"iops" : 0.000000,"runtime" : 0,"total_ios" : 0,"short_ios" : 0,"drop_ios" : 0,"slat_ns" : {"min" : 0,"max" : 0,"mean" : 0.000000,"stddev" : 0.000000},"clat_ns" : {"min" : 0,"max" : 0,"mean" : 0.000000,"stddev" : 0.000000,"percentile" : {"1.000000" : 0,"5.000000" : 0,"10.000000" : 0,"20.000000" : 0,"30.000000" : 0,"40.000000" : 0,"50.000000" : 0,"60.000000" : 0,"70.000000" : 0,"80.000000" : 0,"90.000000" : 0,"95.000000" : 0,"99.000000" : 0,"99.500000" : 0,"99.900000" : 0,"99.950000" : 0,"99.990000" : 0,"0.00" : 0,"0.00" : 0,"0.00" : 0}},"lat_ns" : {"min" : 0,"max" : 0,"mean" : 0.000000,"stddev" : 0.000000},"bw_min" : 0,"bw_max" : 0,"bw_agg" : 0.000000,"bw_mean" : 0.000000,"bw_dev" : 0.000000,"bw_samples" : 0,"iops_min" : 0,"iops_max" : 0,"iops_mean" : 0.000000,"iops_stddev" : 0.000000,"iops_samples" : 0},"write" : {"io_bytes" : 995677306880,"io_kbytes" : 972341120,"bw" : 3241104,"iops" : 25321.130122,"runtime" : 300003,"total_ios" : 7596415,"short_ios" : 0,"drop_ios" : 0,"slat_ns" : {"min" : 3449,"max" : 120791,"mean" : 9509.510472,"stddev" : 4055.313047},"clat_ns" : {"min" : 275173,"max" : 26670061,"mean" : 2517367.006916,"stddev" : 1031195.720264,"percentile" : {"1.000000" : 1056768,"5.000000" : 1253376,"10.000000" : 1368064,"20.000000" : 1630208,"30.000000" : 1892352,"40.000000" : 2146304,"50.000000" : 2408448,"60.000000" : 2670592,"70.000000" : 2867200,"80.000000" : 3129344,"90.000000" : 3817472,"95.000000" : 4358144,"99.000000" : 5734400,"99.500000" : 6455296,"99.900000" : 8454144,"99.950000" : 9371648,"99.990000" : 15269888,"0.00" : 0,"0.00" : 0,"0.00" : 0}},"lat_ns" : {"min" : 279136,"max" : 26675989,"mean" : 2526944.836070,"stddev" : 1031563.153543},"bw_min" : 1596160,"bw_max" : 3427584,"bw_agg" : 99.997880,"bw_mean" : 3241035.300000,"bw_dev" : 309378.872013,"bw_samples" : 300,"iops_min" : 12470,"iops_max" : 26778,"iops_mean" : 25320.580000,"iops_stddev" : 2417.018326,"iops_samples" : 300},"trim" : {"io_bytes" : 0,"io_kbytes" : 0,"bw" : 0,"iops" : 0.000000,"runtime" : 0,"total_ios" : 0,"short_ios" : 0,"drop_ios" : 0,"slat_ns" : {"min" : 0,"max" : 0,"mean" : 0.000000,"stddev" : 0.000000},"clat_ns" : {"min" : 0,"max" : 0,"mean" : 0.000000,"stddev" : 0.000000,"percentile" : {"1.000000" : 0,"5.000000" : 0,"10.000000" : 0,"20.000000" : 0,"30.000000" : 0,"40.000000" : 0,"50.000000" : 0,"60.000000" : 0,"70.000000" : 0,"80.000000" : 0,"90.000000" : 0,"95.000000" : 0,"99.000000" : 0,"99.500000" : 0,"99.900000" : 0,"99.950000" : 0,"99.990000" : 0,"0.00" : 0,"0.00" : 0,"0.00" : 0}},"lat_ns" : {"min" : 0,"max" : 0,"mean" : 0.000000,"stddev" : 0.000000},"bw_min" : 0,"bw_max" : 0,"bw_agg" : 0.000000,"bw_mean" : 0.000000,"bw_dev" : 0.000000,"bw_samples" : 0,"iops_min" : 0,"iops_max" : 0,"iops_mean" : 0.000000,"iops_stddev" : 0.000000,"iops_samples" : 0},"usr_cpu" : 16.971887,"sys_cpu" : 16.700555,"ctx" : 3797071,"majf" : 0,"minf" : 10,"iodepth_level" : {"1" : 0.100000,"2" : 0.100000,"4" : 0.100000,"8" : 0.100000,"16" : 0.100000,"32" : 0.100000,">=64" : 99.999171},"latency_ns" : {"2" : 0.000000,"4" : 0.000000,"10" : 0.000000,"20" : 0.000000,"50" : 0.000000,"100" : 0.000000,"250" : 0.000000,"500" : 0.000000,"750" : 0.000000,"1000" : 0.000000},"latency_us" : {"2" : 0.000000,"4" : 0.000000,"10" : 0.000000,"20" : 0.000000,"50" : 0.000000,"100" : 0.000000,"250" : 0.000000,"500" : 0.010000,"750" : 0.032186,"1000" : 0.438352},"latency_ms" : {"2" : 34.327943,"4" : 57.133003,"10" : 8.031209,"20" : 0.030922,"50" : 0.010000,"100" : 0.000000,"250" : 0.000000,"500" : 0.000000,"750" : 0.000000,"1000" : 0.000000,"2000" : 0.000000,">=2000" : 0.000000},"latency_depth" : 64,"latency_target" : 0,"latency_percentile" : 100.000000,"latency_window" : 0}],"disk_util" : [{"name" : "nvme0n1","read_ios" : 44,"write_ios" : 7593512,"read_merges" : 0,"write_merges" : 0,"read_ticks" : 4,"write_ticks" : 19039100,"in_queue" : 18805644,"util" : 100.000000}]
}

with open('fio.json') as file:  data = json.load(file)
#这里的data['jobs'][0]代表取字典jobs的值后,是一个[],看作为List,需要取list里面的值,我们这里只有一个,取[0],取到以后再取key ['write'],在这个字典下取key['iops'],则可以拿到对应的iops的值
iops = data['jobs'][0]['write']['iops']
bw = data['jobs'][0]['write']['bw']

这里我们最后 iops和bw的值分别为:25321.130122 和 3241104
感兴趣可以一个一个试,看输出的是什么:
即打印

print(data['jobs'])
print(data['jobs'][0])

以此类推,观察每一步有啥输出,有助理解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/101562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端本地存储方案-localForage-vue3中使用

前言 前端有多种本地存储方案可供选择,常见的有: Cookie:小型的文本文件,存储少量数据Web Storage :包括:localStorage和sessionStorage,存储数据有上限(5M)左右Indexe…

系统架构师备考倒计时26天(每日知识点)

详细的项目范围说明书,是项目成功的关键。 范围定义的输入包括以下内容: ① 项目章程。如果项目章程或初始的范围说明书没有在项目执行组织中使用,同样的信息需要进一步收集和开发,以产生详细的项目范围说明书。 ② 项目范围管理计划。 ③ 组…

mac M2芯片在使用Android studio 编译问题bad cpu type in executable android

由于mac的intel芯片的一些指令集没有同步在M1 M2芯片上所以需要做兼容 打开控制台(通过访达 - 应用程序 - 实用工具 - 终端 ) 输入 softwareupdate --install-rosetta 之后在输入 A 就可以了。 原产考地址:硬核!在 M1 芯…

一个非常简单的变分量子分类器 (VQC)

一、说明 在之前的帖子(这里和这里)中,我已经开始谈论 QML,为什么以及如何学习,从现在开始,我将开始分享我的研究和发现,到目前为止,这些都是非常基本的。 二、实验概述 今天&#…

学习黑马程序员JavaScript总结

今天注意学习了数据类型、运算符、常量、数组,这些内容接受的还是比较快的,因为前面学过C语言还有Python,比较不同的地方就是未定义类型undefined,这个类型是在只声明了变量但未赋值,而unll空类型它是赋了值但该值是空…

Docker-consul容器服务更新与发现

目录 一、consul简介 1、什么是服务注册与发现 2、什么是consul 3、consul的关键特性 二、consul部署 1、consul服务器部署 1.1 建立consul服务 2、查看集群信息 3、通过http api 获取集群信息 三、registrator部署 1、安装Gliderlabs/Registrator 2、测试服务发现…

常见排序算法详解

目录 排序的相关概念 排序: 稳定性: 内部排序: 外部排序: 常见的排序: 常见排序算法的实现 插入排序: 基本思想: 直…

Milvus踩坑笔记

本文用于记录在学习 Milvus文档时所遇到的一些Bug或报错及解决方法 参考文章: 官方demo:在Dynamic Schema的集合中插入数据 报错1:auto id enabled, id shouldnt in entities[0] 问题描述 此报错出现在Milvus官方在介绍 Dynamic Schema …

7.1 yolov5优化模型时,自动标注xml数据

yolov5优化模型时,一般需要继续标注一些检测错误的图片,将其标为xml数据。以下是根据训练好的模型自动标注xml数据的python代码: 注意:代码中包含了本人的yolov5的测试过程,测试过程可以自己根据yolov5的测试文件自行…

基于小波变换的分形信号r指数求解算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ................................................................... %通过功率谱密度曲线…

企业聊天应用程序使用 Kubernetes

1. 客户端-服务器工作流程 客户端:在我们的架构中,客户端可以分为三种类型:iOS 和 Android 移动应用程序以及 Web 聊天。移动应用程序首先通过 API 网关服务与服务器进行通信,其中客户端会生成一个访问令牌,该令牌将授…

华测监测预警系统 2.2 存在任意文件读取漏洞

华测监测预警系统 2.2 存在任意文件读取漏洞 一、 华测监测预警系统 2.2 简介二、漏洞描述三、影响版本四、fofa查询语句五、漏洞复现1、手动复现2、自动复现 六、修复建议 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信…

芯科蓝牙BG27开发笔记10-BG27样板调试

样板使用了1.5V电源,boost升压到1.8V供MCU使用,因此IO通信的电平需要注意: 不能使用常用的5V、3.3V的jlink进行调试,类似的uart通信也一样。 BRD4001A底板的jlink如何使用? 参考开发板套件的说明文档《ug551-brd4194…

小迈物联网网关对接串口服务器[Modbus RTU]

很多工控现场,方案中会使用串口服务器采集Modbus RTU的设备,这种情况下一般会在PC机上装上串口服务器厂家的软件来进行数据采集。如果现场不需要PC机,而是通过网关将数据传输到软件平台,如何实现呢? 本文简要介绍小迈网…

Dockerfile指令详解

如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。 Dockerfile 是一个文本文件,其内包…

【TB作品】基于MSP430G2553单片机的超声波测距与报警系统,原理图,PCB

功能: 1 超声波测距显示 2 按键设置报警上下限 3 蜂鸣器报警 原理图: PCB样式: 实物: 代码: https://github.com/xddun/blog_code_search

DC/DC开关电源学习笔记(十二)Boost升压电路仿真及工程应用案例

(十二)Boost升压电路仿真及工程应用案例 1.Boost电路仿真案例2.Boost电路工程应用实例1.Boost电路仿真案例 指标参数:输入电压5V,输出电压12V,输出电流1A,开关频率10kHz,电压纹波0.5%。 根据输入指标参数确定CCM模式下各个关键元器件测参数: 负载电阻Rl=12R 占空比D=6…

Zabbix“专家坐诊”第206期问答汇总

问题一 Q:老师,我想配置一下监控项和触发器,目前我想要三个,内存的使用情况百分比、磁盘的剩余多少G、CPU的使用情况百分比,用自带的模板修改,该怎么做? A:可以用100减去内置键值cp…

数据结构学习笔记——数据结构概论

目录 一、数据与数据元素二、数据类型和抽象数据类型三、数据结构的定义(一)逻辑结构(二)存储结构(物理结构)1、顺序存储结构2、链式存储结构3、索引存储结构4、散列存储结构 (三)数…

Allegro基本规则设置指导书之Spacing规则设置

进入规则设置界面 1.设置Line 到其他的之间规则: 2.设置Pins 到其他的之间规则: 3.设置Vias 到其他的之间规则: