Я пытаюсь сбрасывать питон Python в файл YAML, используя ruamel.yaml
. Я знаком с интерфейсом json
модуля, где довольно-печать Dict это так просто, какruamel.yaml эквивалент sort_keys?
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
также doesn't seem to have any exhaustive docs, и поиск Google для «ruamel.yaml sort» или «ruamel.yaml alphabetize» не стал ничем на уровне простоты, которую я ожидал бы.
Есть ли один-два вкладыша для красивой печати файла YAML со отсортированными ключами?
(Обратите внимание, что мне нужны ключи, чтобы быть алфавитный вниз через весь контейнер, рекурсивно, только в алфавитном порядке верхнего уровня не является достаточно хорошим.)
Обратите внимание, что если я использую round_trip_dump
, ключи не отсортировано; и если я использую safe_dump
, выход не является «YAML-стилем» (или, что более важно, «Kubernetes-style») 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}
Вы смотрели на параметры safe_dump в нижней части моего ответа? – Anthon