首页 > 解决方案 > 转储配置时有什么方法可以指定 YAML 版本吗?

问题描述

我有一个配置要存储在 YAML 文件中以备将来使用。但我也想存储YAML 1.2版本。

import yaml
with open('r.yaml', 'w') as r:
    a = {'len' : 5, 'weidth' : 3}
    yaml.dump(a, r)

我想要输出为

%YAML 1.2
---
len: 5
weidth: 3

编辑:上述问题的扩展。
在同一个文件中转储多个配置时是否可以删除冗余

import yaml
with open('r.yaml', 'w') as r:
    a = [{'len' : 5, 'weidth' : 3}, {'a': 2, 'b': 4}]
    yaml.dump_all(a, r, version=(1,2))

和预期输出

%YAML 1.2
---
len: 5
weidth: 3
---
a: 2
b: 4

目前是

%YAML 1.2
---
len: 5
weidth: 3
%YAML 1.2
---
a: 2
b: 4

标签: pythonyaml

解决方案


将版本作为主要和次要版本的元组作为关键字参数传递给yaml.dump

>>> yaml.dump({'foo': 'bar'}, sys.stdout, version=(1,2))
%YAML 1.2
---
foo: bar

文档中提到了关键字属性,但我没有看到明确提及如何传递版本。version="1.2"引发 a ValueError,尽管回溯清楚地表明了该值的用途。


推荐阅读