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

批量修改json文件中的标签

一、代码

import os
import json
import argparse
from pathlib import Pathdef modify_json_labels(input_dir, output_dir=None, label_value="book"):"""批量修改JSON文件中shapes下的label标签内容参数:input_dir (str): 输入JSON文件所在目录output_dir (str): 输出目录,默认为None(覆盖原文件)label_value (str): 要设置的label值,默认为"book""""# 确保输入目录存在if not os.path.exists(input_dir):raise FileNotFoundError(f"输入目录不存在: {input_dir}")# 如果未指定输出目录,使用输入目录(覆盖原文件)if output_dir is None:output_dir = input_direlse:# 确保输出目录存在os.makedirs(output_dir, exist_ok=True)# 获取所有JSON文件json_files = [f for f in os.listdir(input_dir) if f.endswith('.json')]if not json_files:print("未找到JSON文件")returnmodified_count = 0# 处理每个JSON文件for json_file in json_files:file_path = os.path.join(input_dir, json_file)output_path = os.path.join(output_dir, json_file)try:# 读取JSON文件with open(file_path, 'r', encoding='utf-8') as f:data = json.load(f)# 修改label标签modified = Falseif 'shapes' in data and isinstance(data['shapes'], list):for shape in data['shapes']:if 'label' in shape:shape['label'] = label_valuemodified = Trueif modified:# 写入修改后的JSONwith open(output_path, 'w', encoding='utf-8') as f:json.dump(data, f, ensure_ascii=False, indent=2)modified_count += 1print(f"已修改: {json_file}")else:print(f"未修改(未找到shapes/label): {json_file}")except Exception as e:print(f"处理文件 {json_file} 时出错: {str(e)}")print(f"处理完成。共修改 {modified_count} 个文件,总文件数: {len(json_files)}")if __name__ == "__main__":# 创建命令行参数解析器parser = argparse.ArgumentParser(description='批量修改JSON文件中shapes下的label标签内容')parser.add_argument('input_dir', help='输入JSON文件所在目录')parser.add_argument('-o', '--output_dir', help='输出目录,不指定则覆盖原文件')parser.add_argument('-l', '--label', default='book', help='要设置的label值,默认为book')# 解析命令行参数args = parser.parse_args()# 执行修改操作try:modify_json_labels(args.input_dir, args.output_dir, args.label)except Exception as e:print(f"程序执行出错: {str(e)}")    

二、使用说明

# 直接修改原文件

python json_label_modifier.py /path/to/json/files 

# 指定输出目录

python json_label_modifier.py /path/to/json/files -o /path/to/output

# 指定新的label值

python json_label_modifier.py /path/to/json/files -l new_label_value

相关文章:

  • 【Linux基础】网络相关命令
  • 202536 | KafKa生产者分区写入策略+消费者分区分配策略
  • 深入解析进程地址空间:从虚拟到物理的奇妙之旅
  • 通过推测搜索加速大型语言模型推理 (SpecSearch) 论文总结
  • PySide6 GUI 学习笔记——常用类及控件使用方法(常用类字体QFont)
  • 【图书管理系统】深度讲解:图书列表展示的后端实现、高内聚低耦合的应用、前端代码讲解
  • 神经网络极简入门技术分享
  • 【入门】数字走向I
  • 数字信号处理|| 离散系统的冲激响应和阶跃响应
  • Web3 学习全流程攻略
  • CAD属性图框值与Excel联动(CAD块属性导出Excel、excel更新CAD块属性)——CAD c#二次开发
  • 【AI大模型学习路线】第一阶段之大模型开发基础——第五章(提示工程技术-2)Active-prompt。
  • JavaScript 数组去重:11 种方法对比与实战指南
  • 每天五分钟机器学习:KTT条件
  • QMK自定义4*4键盘固件创建教程:最新架构详解
  • HTTP 的发展史:从前端视角看网络协议的演进
  • Spring 必会之微服务篇(2)
  • Unity Shaders and Effets Cookbook
  • 汽车四缸汽油机曲柄连杆机构设计关键技术研究
  • 测试左移系列-产品经理实战-实战认知1
  • 中国海外发展:今年前4个月销售665.8亿元,花费305亿元拿地
  • 习近平会见斯洛伐克总理菲佐
  • 虚假认定实质性重组、高估不良债权价值,原中国华融资产重庆分公司被罚180万元
  • 上海质子重离子医院二期项目启动,有望成为全世界最大粒子治疗中心
  • 专访|高圆圆:像鸟儿一样,柔弱也自由
  • 司法部:加快研究制定行政执法监督条例,建立完善涉企行政执法监督长效机制