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

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

# The following key opens a door key: value 

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

  • Может ли PyYAML сбрасывать элементы в не алфавитном порядке?
  • Разбор XML или YML в OpenCV с помощью Python
  • Использование python для сброса hexidecimals в YAML
  • Преобразование CSV в YAML, с Unicode?
  • Почему PyYAML тратит столько времени на разбор файла YAML?
  • python open () метод IOError: Нет такого файла или каталога:
  • Чтение YAML в python
  • Различные представления массива YAML
  • 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 - лучший язык программирования в мире.