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

ruamel.yaml将YAML列表转为多文档插入---的问题及解决方法

解决ruamel.yaml dump_all生成多文档的问题

问题根源在于dump_all的设计用途——它是用来序列化多个独立YAML文档的。如果你直接把加载得到的列表传给它,它会把列表里的每个字典当成单独的文档处理,所以自动插入---分隔符。

有两种直接可行的解决方式:

1. 用dump替代dump_all(推荐)

如果你的需求只是输出单个列表文档,直接用dump方法即可,这是处理单个YAML文档的标准用法:

from ruamel.yaml import YAML

yaml = YAML()
# 加载原文件的单个列表文档
with open("original.yaml", "r") as f:
    data = yaml.load(f)

# 用dump输出单个文档,保持原列表结构
with open("output.yaml", "w") as f:
    yaml.dump(data, f)

2. 必须用dump_all时的处理

如果因为特定场景(比如要和其他文档合并输出)必须使用dump_all,只需把加载得到的列表包装成一个新的列表,让dump_all把整个原列表当作单个文档处理:

from ruamel.yaml import YAML

yaml = YAML()
with open("original.yaml", "r") as f:
    data = yaml.load(f)

# 把原列表作为单个元素传入dump_all,避免被拆分
with open("output.yaml", "w") as f:
    yaml.dump_all([data], f)

以上两种方式都能让输出文件保持原有的单个列表结构,不会被拆分成带---的多文档形式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 22:43:17