You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改现有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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:24:03