如何用Python批量替换JSON指定键值并生成1000个测试文件
批量替换JSON文件指定键值的Python方案
需求拆解
需要处理本地文件夹内1000个结构一致的JSON文件,完成两个核心替换:
- 全局替换所有数组中的
f_ID(原值"80510926")为1-100的连续数字 - 替换仅出现在
t_A数组中的f_Ctb(原值"10333"),同时同步替换t_B数组中的f_B_Company_ID(原值"10333")为对应数字
实现代码
import os import json # 配置参数 JSON_FOLDER = "./your_json_folder" # 替换为你的JSON文件夹实际路径 START_NUM = 1 END_NUM = 100 def process_json_file(file_path, current_num): # 读取JSON文件内容 with open(file_path, 'r', encoding='utf-8') as f: data = json.load(f) # 遍历所有数组,替换f_ID for key in data: if isinstance(data[key], list): for item in data[key]: if "f_ID" in item and item["f_ID"] == "80510926": item["f_ID"] = str(current_num) # 保持字符串类型,匹配原结构 # 替换t_A中的f_Ctb for item in data.get("t_A", []): if "f_Ctb" in item and item["f_Ctb"] == "10333": item["f_Ctb"] = str(current_num) # 替换t_B中的f_B_Company_ID for item in data.get("t_B", []): if "f_B_Company_ID" in item and item["f_B_Company_ID"] == "10333": item["f_B_Company_ID"] = str(current_num) # 写入修改后的内容 with open(file_path, 'w', encoding='utf-8') as f: json.dump(data, f, indent=2, ensure_ascii=False) def main(): # 获取文件夹内所有JSON文件 json_files = [f for f in os.listdir(JSON_FOLDER) if f.endswith('.json')] # 为1000个文件循环分配1-100的数字 for idx, file_name in enumerate(json_files): current_num = START_NUM + (idx % END_NUM) file_path = os.path.join(JSON_FOLDER, file_name) process_json_file(file_path, current_num) print(f"已处理: {file_name} | 替换值: {current_num}") if __name__ == "__main__": main()
关键说明
- 路径配置:务必将
JSON_FOLDER替换为你的JSON文件所在的实际文件夹路径 - 类型兼容:替换后的数字以字符串类型保存,和原JSON结构一致,避免功能测试时出现类型不匹配问题
- 数字分配:默认1000个文件循环使用1-100的数字(每10个文件重复一轮1-100);如果需要每个文件用唯一数字(1-1000),只需将
current_num = START_NUM + idx即可 - 容错处理:使用
data.get()方法避免因键缺失导致的报错,适配可能的结构微小差异
内容的提问来源于stack exchange,提问作者Sudarshan kumar
相关产品推荐
相关产品推荐

