当前位置: 首页 > news >正文

使用 Python修改JSON 文件中对应键值

文章目录

    • 前言
    • 代码分析


前言

  在日常的数据处理工作中,经常需要对 JSON 文件进行读取和修改。在 Python 中,处理 JSON 文件非常方便。本文将通过一个简单的示例程序来演示如何读取和修改 JSON 文件。

代码分析

  首先,需要导入 json 和 os 模块,这两个模块提供了处理 JSON 文件和文件路径的功能。

import json
import os

接下来,指定 JSON 文件的路径和文件名,并定义一个保存修改后文件的路径。

path = 'D:/python auto'  # 修改为包含 via_export_coco.json 文件的目录路径
file_name = 'via_export_coco.json'  # 文件名
path2 = 'via_export_coco_int.json'  # 保存路径
file_path = os.path.join(path, file_name)  # 完整文件路径

然后,使用 os.path.isfile() 函数检查文件是否存在。如果文件存在,将读取文件内容,并进行修改。

num_flag = 0
if os.path.isfile(file_path):  # 检查文件是否存在num_flag = 1with open(file_path, 'r', encoding='utf-8') as load_f:load_dict = json.load(load_f)# 修改的代码开始for annotation in load_dict['annotations']:annotation['image_id'] = int(annotation['image_id'])# 修改的代码结束

在上述代码中,通过遍历 JSON 文件中的 ‘annotations’ 键对应的列表,并将其中的 ‘image_id’ 值转换为整数类型。

最后,将修改后的数据保存到新文件中。

    with open(os.path.join(path, path2), 'w', encoding='utf-8') as dump_f:json.dump(load_dict, dump_f, indent=4, ensure_ascii=False)

最后,根据 num_flag 的值输出相应的提示信息。

if num_flag == 0:print('Sorry!该文件不存在,请重新确认文件路径是否正确。')
else:print('完成转换。')

通过以上的步骤,可以轻松地读取和修改 JSON 文件,实现自动化处理。

完整的程序代码如下:

import json
import ospath = 'D:/python auto'  # 修改为包含 via_export_coco.json 文件的目录路径
file_name = 'via_export_coco.json'  # 文件名
path2 = 'via_export_coco_int.json'  # 保存路径
file_path = os.path.join(path, file_name)  # 完整文件路径num_flag = 0
if os.path.isfile(file_path):  # 检查文件是否存在num_flag = 1with open(file_path, 'r', encoding='utf-8') as load_f:load_dict = json.load(load_f)# 修改的代码开始for annotation in load_dict['annotations']:annotation['image_id'] = int(annotation['image_id'])# 修改的代码结束with open(os.path.join(path, path2), 'w', encoding='utf-8') as dump_f:json.dump(load_dict, dump_f, indent=4, ensure_ascii=False)if num_flag == 0:print('Sorry!该文件不存在,请重新确认文件路径是否正确。')
else:print('完成转换。')
http://www.lryc.cn/news/224127.html

相关文章:

  • 【Rust日报】2023-11-08 RustyVault -- 基于 rust 的现代秘密管理系统
  • 07【保姆级】-GO语言的程序流程控制【if switch for while 】
  • 求2个字符串的最短编辑距离 java 实现
  • 单例模式 rust和java的实现
  • tqdm学习
  • Zigbee—网络层地址分配机制
  • [Matlab]基于LSTM+NSGA2的风光火力发电策略优化
  • 智安网络|探索人机交互的未来:自然语言处理的前沿技术
  • Could not load library libcudnn_cnn_train.so.8, 解决类似问题的思路与方法
  • 孙子兵法_00000
  • 代挂单页网址发布页+加盟代理+APP下载页源码
  • 计算机视觉驾驶行为识别应用简述
  • asp.net core configuration配置读取
  • windows上 Nexus 批量上传 maven依赖npm依赖
  • 已解决:Python Error: IndentationError: expected an indented block 问题
  • 汽车标定技术(六)--基于模型开发如何生成完整的A2L文件(2)
  • 普华永道于进博会发布全新升级的DSAI投资管理数字化平台
  • ssm+vue的高校学生课堂考勤系统设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。
  • 常用hivesql记录
  • C# OpenCvSharp 去除文字中的线条
  • 【树的存储结构,孩子链表】
  • 到蒙古包了,这边天气-9度 很冷
  • 淘宝天猫京东苏宁1688等平台关键词监控价格API接口(店铺商品价格监控API接口调用展示)
  • 案例:用户管理
  • AIGC:使用生成对抗网络GAN实现MINST手写数字图像生成
  • excel中超级表和普通表的相互转换
  • element中el-switch用法汇总(拓展:el-switch开关点击弹出确认框时,状态先改变,点击确认/取消失效,怎么解决?)
  • mysql之高阶语句
  • 视频编软件会声会影2024中文版功能介绍
  • IS-LM模型:从失衡到均衡的模拟