如何修改现有Python代码实现批量YAML文件转JSON并保存到指定路径
代码修改方案
你只需要调整函数的入参为多文件路径列表,同时把输出路径从单个文件改为目标保存目录,遍历每个输入文件单独转换即可,修改后代码如下:
import os import json import ruamel.yaml def convert(in_file_list, out_dir): # 初始化yaml加载器,只初始化一次提升效率 yaml = ruamel.yaml.YAML(typ='safe') # 确保输出目录存在,不存在就自动创建 os.makedirs(out_dir, exist_ok=True) # 遍历所有输入的yaml文件 for in_file in in_file_list: # 跳过不存在的无效文件 if not os.path.isfile(in_file): continue # 获取原yaml的文件名,替换后缀为json base_name = os.path.basename(in_file) json_name = os.path.splitext(base_name)[0] + '.json' # 拼接得到完整的输出文件路径 out_file = os.path.join(out_dir, json_name) # 原转换逻辑保留,新增编码指定避免中文乱码 with open(in_file, 'r', encoding='utf-8') as i: data = yaml.load(i) with open(out_file, 'w', encoding='utf-8') as o: json.dump(data, o, indent=2, ensure_ascii=False)
改动说明
- 函数入参调整为
in_file_list(多输入YAML文件的路径列表)、out_dir(所有JSON统一保存的目标目录) - 新增输出目录自动创建逻辑,避免路径不存在时报错
- 新增文件名自动处理逻辑:每个YAML文件会保留原文件名,仅把后缀改为
.json后保存到目标目录 - 新增简单的文件有效性校验,跳过不存在的输入文件
- 新增编码指定,避免中文等非ASCII字符乱码
调用示例
如果你是从GUI获取多文件选择结果,直接把GUI返回的文件路径列表、用户选择的保存目录传入函数即可,示例调用:
# 示例:GUI返回的多选yaml文件路径列表 selected_yamls = ["/path/conf1.yaml", "/path/conf2.yaml", "/path/conf3.yaml"] # 示例:GUI返回的保存目录 save_dir = "/path/all_json_output/" # 调用转换 convert(selected_yamls, save_dir)
内容的提问来源于stack exchange,提问作者Master
相关产品推荐
相关产品推荐

