を使用して、Python dict を YAML ファイルにダンプしようとしています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 ファイルをきれいに印刷するための 1 つまたは 2 つのライナーはありますか?
(コンテナ全体で再帰的にキーをアルファベット順に並べる必要があることに注意してください。最上位レベルをアルファベット順に並べるだけでは十分ではありません。)
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}