Язык разметки YAML - это удобный для людей стандарт сериализации данных, предназначенный для удобства чтения человеком и взаимодействия со скриптовыми языками, ориентированный на удобство ввода-вывода типичных структур данных. Разметка YAML часто используется для написания конфигурационных файлов.
Модуль pyyaml
- это синтаксический анализатор языка разметки YAML 1.1 для Python, имеет поддержку pickle
, способный к расширению API. PyYAML поддерживает стандартные теги YAML и предоставляет специфичные для Python теги, которые позволяют представлять произвольный объект Python.
Модуль PyYAML
применим для широкого спектра задач - от сложных конфигурационных файлов до сериализации объектов и персистентности. Официальным рекомендуемым расширением имени файла для файлов YAML является .yaml
. Дополнительно смотрите "Синтаксис документа YAML"
PyYAML
в виртуальное окружение:# создаем виртуальное окружение, если нет $ python3 -m venv .venv --prompt VirtualEnv # активируем виртуальное окружение $ source .venv/bin/activate # ставим модуль pyyaml (VirtualEnv):~$ python -m pip install -U pyyaml
Можно прочитать документ YAML с помощью функции yaml.load() модуля PyYAML. Эта функция анализирует и преобразует объект YAML в словарь dict Python. Этот процесс известен как десериализация YAML в Python.
Функция yaml.load_all() анализирует данные и возвращает последовательность объектов Python, соответствующих документам YAML.
При помощи модуля PyYAML, используя в документе YAML тег !!python/object, могут быть загружены и созданы экземпляры классов Python. Так же рассмотрена безопасная загрузка классов при помощи функции Функция yaml.safe_load().
Для сериализации объекта Python в поток YAML необходимо использовать функцию yaml.dump(data, stream) модуля PyYAML. кроме того, можно использовать функцию yaml.safe_dump(data, stream), которая не поддерживает произвольные объекты Python.
Модуль PyYAML позволяет выгружать/сохранять экземпляры пользовательских классов Python в поток YAML. Можно определить свои собственные теги для документа YAML для конкретного приложения. Самый простой способ сделать это - определить подкласс yaml.YAMLObject
В разделе представлен общий синтаксис разметки документа YAML, а так же наиболее распространенные конструкции YAML вместе с соответствующими объектами Python.