import os import json def replace_underscores_in_task_type(data): """处理JSON数据,替换task_type中的下划线""" for item in data: if isinstance(item, dict) and 'task_type' in item: original = item['task_type'] if isinstance(original, str): item['task_type'] = original.replace('_', '-') return data def process_json_file(file_path): """处理单个JSON文件""" try: with open(file_path, 'r+', encoding='utf-8') as f: # 读取并验证数据格式 data = json.load(f) if not isinstance(data, list): print(f" 已跳过非数组文件:{file_path}") return # 处理数据并写回 modified_data = replace_underscores_in_task_type(data) f.seek(0) json.dump(modified_data, f, indent=4, ensure_ascii=False) f.truncate() print(f" 成功处理:{os.path.basename(file_path)}") except Exception as e: print(f" 处理失败 [{os.path.basename(file_path)}]:{str(e)}") def process_directory(target_dir): """处理目录下的JSON文件(不包含子目录)""" for file in os.listdir(target_dir): if file.lower().endswith('.json'): file_path = os.path.join(target_dir, file) if os.path.isfile(file_path): process_json_file(file_path) if __name__ == '__main__': input_directory = "/mnt/data/users/zys/proj/vlm_reasoning/utils/json" # 修改为你的目录路径 if os.path.isdir(input_directory): print(f" 正在处理目录:{input_directory}") process_directory(input_directory) print(" 处理完成") else: print(f" 目录不存在:{input_directory}")