我正在尝试将 Python dict 转储到使用ruamel.yaml
. 我熟悉json
模块的界面,漂亮地打印字典就像
import json
with open('outfile.json', 'w') as f:
json.dump(mydict, f, indent=4, sort_keys=True)
,ruamel.yaml
我已经做到了
import ruamel.yaml
with open('outfile.yaml', 'w') as f:
ruamel.yaml.round_trip_dump(mydict, f, indent=2)
但它似乎不支持该sort_keys
选项。ruamel.yaml
似乎也没有任何详尽的文档,并且在 Google 中搜索“ruamel.yaml sort”或“ruamel.yaml alphabetize”并没有达到我所期望的简单程度。
是否有一个或两个行来漂亮地打印带有排序键的 YAML 文件?
(请注意,我需要在整个容器中递归地按字母顺序排列键;仅按字母顺序排列顶层是不够的。)
请注意,如果我使用round_trip_dump
,则键未排序;如果我使用safe_dump
,则输出不是“YAML 风格”(或更重要的是“Kubernetes 风格”)YAML。我不想[]
或{}
在我的输出中。
$ pip freeze | grep yaml
ruamel.yaml==0.12.5
$ python
>>> import ruamel.yaml
>>> mydict = {'a':1, 'b':[2,3,4], 'c':{'a':1,'b':2}}
>>> print ruamel.yaml.round_trip_dump(mydict) # right format, wrong sorting
a: 1
c:
a: 1
b: 2
b:
- 2
- 3
- 4
>>> print ruamel.yaml.safe_dump(mydict) # wrong format, right sorting
a: 1
b: [2, 3, 4]
c: {a: 1, b: 2}