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

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

# The following key opens a door key: value 

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

  • pyyaml: демпинг без тегов
  • Формат дампа PyYAML
  • Использование python для сброса hexidecimals в YAML
  • Можно ли исправить допустимый YAML с привязками / ссылками, отключенными с помощью Ruby или Python?
  • Любые библиотеки yaml в Python, которые поддерживают демпинг длинных строк в виде блочных литералов или сложенных блоков?
  • Обслуживание статического html в Google app engine Python
  • Как получается, что сериализация json намного быстрее, чем сериализация yaml в Python?
  • Yaml объединяется в Python
  • 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 - лучший язык программирования в мире.