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

如何从目录中多个YAML文件提取指定节点生成单个JSON

解决方案

实现思路

  1. 定义需要提取的目标节点集合
  2. 改造YAML读取逻辑,返回加载的数据而非仅打印
  3. 遍历所有YAML文件,逐个提取目标节点数据并汇总
  4. 将汇总数据写入单个JSON文件

完整代码

import yaml
import glob
import json

# 替换为你实际需要提取的节点名称
TARGET_NODES = ["node_a", "node_b", "node_c"]
# Windows路径使用原始字符串避免转义问题
yaml_files = glob.glob(r"C:\Users\test\*.yaml")

def load_yaml(filename):
    try:
        with open(filename, 'r', encoding='utf-8') as f:
            return yaml.safe_load(f)
    except yaml.YAMLError as e:
        print(f"Failed to parse {filename}: {str(e)}")
        return None

# 存储所有提取后的条目
combined_results = []

for file_path in yaml_files:
    data = load_yaml(file_path)
    if not data:
        continue
    # 提取目标节点,不存在的节点返回None(可按需调整)
    extracted_entry = {key: data.get(key) for key in TARGET_NODES}
    combined_results.append(extracted_entry)

# 写入合并后的JSON文件
with open("combined_output.json", 'w', encoding='utf-8') as outfile:
    json.dump(combined_results, outfile, ensure_ascii=False, indent=4)

print("Combined JSON file generated successfully.")

关键注意事项

  • 目标节点配置:修改TARGET_NODES列表为你需要提取的节点名称
  • 路径处理:Windows路径务必使用原始字符串(前缀r)或双反斜杠,防止转义字符干扰
  • 容错处理:读取YAML失败的文件会被跳过,避免整个流程中断
  • JSON格式:ensure_ascii=False保留中文等非ASCII字符,indent=4生成格式化的可读JSON
  • 节点缺失处理:使用dict.get()方法避免因节点不存在抛出KeyError,若需要跳过缺失关键节点的文件,可添加额外判断逻辑

内容的提问来源于stack exchange,提问作者Anu Shivangi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:45:35