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

如何用Python的ruamel.yaml库编写Snowfakery所需的YAML配方文件

问题:生成符合Snowfakery要求的YAML文件格式错误

我想要编写一个可接收参数的Python脚本,将内容写入YAML文件以运行Snowfakery查询。Snowfakery要求文件前几行为带“-”的配方行,其余行无需该符号。

我尝试了如下代码:

snowfakeryTest = {
    "- snowfakery_version": 3,
    "- object": "obj",
    "fields":{
        "name": "John doe"
    }
}

with open("simple.yml", 'w') as outfile:
    yaml_dump(snowfakeryTest, outfile,)

但生成的YAML文件格式始终不符合预期,请问该如何解决?

解决方案

问题根源是你用普通字典构造YAML结构,导致- snowfakery_version和- object被当作字典键,而非YAML列表项。Snowfakery配方文件的核心是列表包裹的配方对象,开头的-对应YAML列表元素,而非键名的一部分。

修改后的代码如下:

import yaml

# 正确结构:列表包裹单个配方字典,键名不带"-"
snowfakeryTest = [
    {
        "snowfakery_version": 3,
        "object": "obj",
        "fields": {
            "name": "John doe"
        }
    }
]

with open("simple.yml", 'w') as outfile:
    yaml.dump(snowfakeryTest, outfile, default_flow_style=False)

生成的符合要求的YAML内容:

- snowfakery_version: 3
  object: obj
  fields:
    name: John doe

核心要点

  • Snowfakery配方是YAML列表,每个列表项对应一个配方对象,因此Python中要用list对应。
  • default_flow_style=False参数保证生成块级格式YAML,而非紧凑流式,契合Snowfakery的格式要求。
  • 如果需要动态传入参数,直接修改字典中的对应值即可(比如将name替换为变量)。

内容的提问来源于stack exchange,提问作者Oliver Mills

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 10:43:22