Сохранить / выгрузить файл YAML с комментариями в PyYAML

У меня есть файл yaml, который выглядит так:

# The following key opens a door key: value 

Есть ли способ load и dump эти данные, сохранив комментарий?

2 Solutions collect form web for “Сохранить / выгрузить файл YAML с комментариями в PyYAML”

PyYAML выбрасывает комментарии на очень низком уровне (в Scanner.scan_to_next_token ).

Хотя вы могли бы адаптировать или расширить его для обработки комментариев во всем стеке, это было бы серьезной модификацией. Dump (= излучающий) комментарий кажется более простым и уже обсуждается .

Если вы используете блочный структурированный YAML, вы можете использовать пакет python¹ ruamel.yaml, который является производным от PyYAML и поддерживает сохранение комментариев в оба конца :

 import sys import ruamel.yaml yaml_str = """\ # example name: # details family: Smith # very common given: Alice # one of the siblings """ code = ruamel.yaml.round_trip_load(yaml_str) code['name']['given'] = 'Bob' ruamel.yaml.round_trip_dump(code, sys.stdout) 

с результатом:

 # example name: # details family: Smith # very common given: Bob # one of the siblings 

Обратите внимание, что комментарии конца строки все еще выровнены.

Вместо обычных объектов list и dict code состоит из завернутых версий², на которые добавлены комментарии.

¹ Установить с помощью pip install ruamel.yaml . Работает на Python 2.6 / 2.7 / 3.3 +
² ordereddict используется в случае отображения, чтобы сохранить порядок

Python - лучший язык программирования в мире.