Yml файл что это python
YAML за 5 минут: синтаксис и основные возможности
Авторизуйтесь
YAML за 5 минут: синтаксис и основные возможности
YAML — это язык для сериализации данных, который отличается простым синтаксисом и позволяет хранить сложноорганизованные данные в компактном и читаемом формате. Рассказываем, как это пригодится для DevOps и виртуализации.
Что такое YAML?
YAML — это язык для хранения информации в формате понятном человеку. Его название расшифровывается как, «Ещё один язык разметки». Однако, позже расшифровку изменили на — «YAML не язык разметки», чтобы отличать его от настоящих языков разметки.
Язык похож на XML и JSON, но использует более минималистичный синтаксис при сохранении аналогичных возможностей. YAML обычно применяют для создания конфигурационных файлов в программах типа Инфраструктура как код (Iac), или для управления контейнерами в работе DevOps.
Чаще всего с помощью YAML создают протоколы автоматизации, которые могут выполнять последовательности команд записанные в YAML-файле. Это позволяет вашей системе быть более независимой и отзывчивой без дополнительного внимания разработчика.
Всё больше и больше компаний используют DevOps и виртуализацию, поэтому YAML — это must have для современного разработчика. Кроме того, YAML легко интегрировать, благодаря поддержке Python (используя PyYAML библиотеку, Docker или Ansible) и других популярных технологий.
YAML vs JSON vs XML
YAML (.yml)
Применение: YAML лучше всего подходит для приложений с большим объемом данных, которые используют DevOps конвейеры или виртуальные машины. Кроме того, улучшение читаемости данных пригодится в командах, где разработчики часто с ними взаимодействуют.
Применение: JSON используется в веб-разработке — это лучший формат для сериализации и передачи данных через HTTP-соединение.
Применение: XML идеален для сложных проектов, которым требуется тонкий контроль над валидацией, схемой и пространством имён. Язык обладает плохой читаемостью, требует большей пропускной способности и ёмкости хранилища, но обеспечивает беспрецедентный контроль.
Характерные особенности YAML
Поддержка мультидокументов
Вы можете объединить несколько YAML-документов в один YAML-файл для облегчения организации файлов и парсинга данных.
Документы разделяются тремя дефисами (—):
Поддержка комментариев
YAML позволяет добавлять комментарии после символа #, как в Python:
Легко читаемый синтаксис
В синтаксисе YAML-файлов используется система отступов, как в Python. Необходимо использовать пробелы, а не табуляцию, чтобы избежать путаницы.
Это избавляет от лишних символов, которые есть в JSON и XML (кавычки, скобки, фигурные скобки).
В итоге читаемость файла значительно повышается.
Явная и неявная типизация
Отсутствие исполняемых файлов
YAML не содержит исполняемых файлов. Поэтому можно безопасно обмениваться YAML-файлами с третьей стороной.
Чтобы использовать исполняемые файлы, YAML нужно интегрировать с другими языками, например Perl или Java.
Синтаксис YAML
В языке есть несколько базовых концепций, которые позволяют обрабатывать большинство данных.
Пары ключ-значение
Большинство данных в YAML-файле хранятся в виде пары ключ-значение, где ключ — это имя пары, а значение — связанные данные.
Скаляры и маппинг
Скаляр представляет собой одно значение, которому соответствует имя.
YAML поддерживает стандартные типы: int и float, boolean, string и null.
Строки
Строка — это коллекция символов, которая может содержать слово или предложение. Можно использовать либо |, для отдельных строк, либо >, для параграфов.
Кавычки в YAML не нужны.
Последовательности
Последовательности — это структуры данных похожие на списки или массивы, которые хранят несколько значений под одним ключом. Они определяются с помощью отступов или [].
Однострочные последовательности выглядят лаконичнее, но хуже читаются.
Словари
Словари — это коллекции пар ключ-значение, которые хранятся под одним ключом. Они позволяют разделить данные на логические категории.
Словари могут содержать более сложные структуры, что позволяет хранить сложные реляционные данные.
Чтение и запись YAML в файл на Python
Чтение и запись YAML в файл на Python
Вступление
В последние годы он стал очень популярным для его использования при хранении данных в сериализованном виде для конфигурационных файлов. Поскольку YAML по сути является форматом данных, библиотека YAML довольно коротка, поскольку единственная функциональность, требуемая от нее, – это возможность разбора файлов в формате YAML.
В этой статье мы начнем с просмотра того, как данные хранятся в файле YAML, а затем загрузим эти данные в объект Python. Наконец, мы узнаем, как хранить объект Python в файле YAML. Итак, давайте начнем.
Прежде чем мы двинемся дальше, есть несколько предварительных условий для этого урока. Вы должны иметь базовое представление о синтаксисе Python и/или иметь хотя бы начальный опыт программирования на каком-либо другом языке. Кроме того, учебник довольно прост и легок для начинающих.
Установка
Процесс установки YAML довольно прост. Есть два способа сделать это; сначала мы начнем с простого:
Способ 1: Через Трубу
Метод 2: Через Источник
Примеры кода YAML
В этом разделе мы узнаем, как обрабатывать (манипулировать) файлами YAML, начиная с того, как их читать, то есть как загружать их в наш скрипт Python, чтобы мы могли использовать их в соответствии с нашими потребностями. Итак, начнем.
Чтение файлов YAML в Python
В этом разделе мы увидим, как читать файлы YAML в Python.
Давайте начнем с создания двух файлов в формате YAML.
Содержимое первого файла выглядит следующим образом:
Содержимое второго файла выглядит следующим образом:
Вы можете видеть, что фрукты.yaml и категории.файлы yaml содержат различные типы данных. Первый содержит информацию только об одном объекте, то есть фруктах, в то время как второй содержит информацию о спорте и странах.
Теперь давайте попробуем прочитать данные из двух файлов, которые мы создали с помощью скрипта Python. Метод load() из модуля yaml можно использовать для чтения файлов YAML. Посмотрите на следующий сценарий:
Теперь давайте попробуем прочитать второй файл YAML аналогичным образом с помощью скрипта Python:
Так как в категории есть 2 документа.yaml file, мы запустили цикл, чтобы прочитать их оба.
Как вы можете видеть из последних двух примеров, библиотека автоматически обрабатывает преобразование данных в формате YAML в словари и списки Python.
Написание файлов YAML на Python
Теперь, когда мы узнали, как преобразовать файл YAML в словарь Python, давайте попробуем сделать все наоборот, то есть сериализовать словарь Python и сохранить его в файл формата YAML. Для этого воспользуемся тем же словарем, который мы получили в качестве вывода из нашей последней программы.
Метод dump() принимает словарь Python в качестве первого параметра, а объект File-в качестве второго.
После выполнения приведенного выше кода создается файл с именем store_file.yaml будет создан в вашем текущем рабочем каталоге.
Вы можете видеть в выходных данных, что фрукты были отсортированы в алфавитном порядке.
Вывод
В этом кратком руководстве мы узнали, как установить библиотеку YAML Python (pyyaml) для работы с файлами в формате YAML. Мы рассмотрели загрузку содержимого файла YAML в нашу программу Python в виде словарей, а также сериализацию словарей Python в файлы YAML и хранение их ключей. Библиотека довольно коротка и предлагает только основные функциональные возможности.
Чтение YAML-файлов в Python при помощи модуля PyYAML
Перевод статьи «How to Read YAML File in Python».
YAML расшифровывается как Yet Another Mark-up Language, что означает «Еще один язык разметки». Этот формат файлов сейчас очень популярен для хранения сериализованных данных, которые достаточно удобочитаемы для человека.
В Python есть несколько модулей для чтения файлов YAML. Сегодня мы поговорим о том, как читать файлы YAML в Python, а точнее — покажем, как это делается при помощи модуля PyYAML.
Для начала
Конечно же, прежде чем решать какие-либо задачи, нужно установить модуль PyYAML. Это, пожалуй, лучший модуль Python для чтения файлов YAML. Однако он не устанавливается вместе с Python по умолчанию. Поэтому, прежде чем проверять примеры, которые мы разберем ниже, вам придется его установить.
Чтобы установить PyYAML, выполните следующую команду:
pip install pyyaml
Создание файла YAML
Для дальнейшей работы нам понадобится файл с содержимым, как в примере ниже. Создайте его и назовите client.yaml.
Пример 1. Чтение содержимого YAML после преобразования объекта Python
После установки пакета PyYAML модуль YAML можно импортировать в скрипт для чтения содержимого YAML путем преобразования объекта Python.
Для создания содержимого YAML (путем сериализации содержимого объекта Python) используется функция dump() модуля yaml.
Давайте напишем код для генерации и вывода в консоль потока YAML путем преобразования содержимого объекта Python. По умолчанию функция dump() сортирует содержимое словаря на основе ключей.
После запуска кода мы получим следующий результат:
Элементы всех словарей списка Python преобразованы в элементы содержимого YAML. При этом вывод отсортирован по ключам словаря. Поэтому значение ключа author было выведено первым, а значение ключа price – последним.
Пример 2. Чтение содержимого из файла YAML
В данном примере мы будем использовать файл client.yaml, созданный ранее.
Функция load() используется для чтения полного содержимого нашего файла. Эта функция вернет содержимое файла в виде списка словарей Python. Затем функция dump() преобразует список в поток YAML, который мы после выведем в консоль.
При запуске этого кода получим следующий вывод:
Пример 3. Чтение ключей и значений из файла YAML
Пример 4. Чтение содержимого YAML-файла в список словарей
Функция safe_load() используется для преобразования содержимого файла YAML в список словарей Python. Эту функцию также можно использовать для загрузки данных из ненадежных источников.
Давайте напишем код для загрузки содержимого файла YAML (с помощью функции safe_load() ) и вывода загруженного содержимого в консоль.
В выводе получаем список словарей:
Заключение
В этой статье мы на нескольких примерах разобрали, как читать файлы YAML в Python. Конечно, с практикой придёт большее понимание, как работать с библиотекой PyYAML. А сейчас можно запустить код из примеров, которые мы привели выше, и удостовериться, что тема чтения файлов YAML полностью понятна.
Синтаксис документа YAML для Python.
Содержание:
Разметка документа YAML.
Пример явного документа YAML:
Пример неявного документа YAML:
Разметка списков в документе YAML.
Последовательности блоков могут быть вложенными:
Нет необходимости начинать вложенную последовательность с новой строки:
Последовательность блоков может быть вложена в словарь блоков. Обратите внимание, что в этом случае нет необходимости делать отступы для блока с последовательностью.
Разметка словарей в документе YAML.
Словари из блоков могут быть вложенными:
Словари из блоков могут быть вложенными в список блоков:
Якоря и псевдонимы в документе YAML.
Используя YAML, можно представить объекты произвольных графоподобных структур. Если необходимо ссылаться на один и тот же объект из разных частей документа YAML, то нужно использовать якоря и псевдонимы.
Модуль PyYAML теперь полностью поддерживает рекурсивные объекты. Например, следующий документ YAML создаст объект списка, содержащий ссылку на себя.
Теги документа YAML и типы Python.
Теги используются для обозначения типа узла YAML. Стандартные теги YAML определены в http://yaml.org/type/index.html.
Теги могут быть неявными:
А могут быть явными:
В следующей таблице описывается, как узлы с разными тегами преобразуются в объекты Python.
Функции и модули.
Например, функция yaml.dump() может быть представлена следующим образом:
Пользовательские объекты Python.
Если только поле args непустое, то вышеприведенные записи можно сократить:
Библиотека YAML в Python
В этом руководстве мы узнаем, как использовать библиотеку YAML в Python 3. В последние годы она стала очень популярной благодаря использованию для хранения данных в виде сериализованных файлов конфигурации. Поскольку YAML по сути является форматом данных, библиотека YAML довольно простая, поскольку единственная необходимая функциональность – это возможность анализировать файлы в формате YAML.
В этой статье мы начнем с рассмотрения того, как данные хранятся в файле YAML, а затем загрузим эти данные в объект Python. Наконец, мы узнаем, как сохранить объект Python в файле YAML.
Прежде чем мы двинемся дальше, есть несколько предварительных условий для этого урока. Вы должны иметь базовое представление о синтаксисе Python или иметь хотя бы начальный опыт программирования на каком-либо другом языке.
Установка
Процесс установки YAML довольно прост. Это можно сделать двумя способами, начнем с простого.
Метод 1: через точку
Самый простой способ установить библиотеку YAML в Python – через диспетчер пакетов pip. Если в вашей системе установлен pip, выполните следующую команду, чтобы загрузить и установить YAML:
Метод 2: через источник
Если у вас не установлен pip или у вас возникли проблемы с описанным выше методом, вы можете перейти на исходную страницу библиотеки. Загрузите репозиторий в виде zip-файла, откройте терминал или командную строку и перейдите в каталог, в который загружен файл. Когда вы окажетесь там, выполните следующую команду:
Примеры кода
В этом разделе мы узнаем, как обрабатывать (манипулировать) файлами YAML, начиная с того, как их читать, то есть как загружать их в наш скрипт Python, чтобы мы могли использовать их в соответствии с нашими потребностями.
Чтение файлов
В этом разделе мы увидим, как читать файлы YAML в Python. Начнем с создания двух файлов в формате YAML.
Содержимое первого файла выглядит следующим образом:
Содержимое второго файла выглядит следующим образом:
Вы можете видеть, что файлы fruit.yaml и category.yaml содержат разные типы данных. Первый содержит информацию только об одном объекте, то есть о фруктах, а второй содержит информацию о видах спорта и странах.
Давайте теперь попробуем прочитать данные из двух файлов, которые мы создали с помощью скрипта Python. Метод load() из модуля yaml можно использовать для чтения файлов YAML. Взгляните на следующий скрипт:
В приведенном выше скрипте мы указали yaml.FullLoader в качестве значения для параметра Loader, который загружает полный язык YAML, избегая выполнения произвольного кода. Вместо использования функции загрузки и последующей передачи yaml.FullLoader в качестве значения параметра Loader вы также можете использовать функцию full_load(), как мы увидим в следующем примере.
Давайте теперь попробуем прочитать второй файл YAML аналогичным образом, используя скрипт Python:
Поскольку в файле category.yaml 2 документа, мы выполнили цикл, чтобы прочитать их оба.
Как видно из последних двух примеров, библиотека автоматически обрабатывает преобразование данных в формате YAML в словари и списки Python.
Запись
Теперь, когда мы узнали, как преобразовать файл YAML в словарь Python, давайте попробуем сделать что-то наоборот, то есть сериализовать словарь Python и сохранить его в файл в формате YAML. Для этого воспользуемся тем же словарем, который мы получили в результате нашей последней программы.
Метод dump() принимает словарь Python как первый, а объект File как второй параметр.
После выполнения приведенного выше кода в вашем текущем рабочем каталоге будет создан файл с именем store_file.yaml.
Еще одна полезная функция, которую предлагает библиотека YAML для метода dump(), – это параметр sort_keys. Чтобы показать, что он делает, применим его к нашему первому файлу, то есть fruit.yaml:
В выводе видно, что фрукты отсортированы в алфавитном порядке.
Заключение
В этом кратком руководстве мы узнали, как установить библиотеку Python YAML (pyyaml) для управления файлами в формате YAML. Мы рассмотрели загрузку содержимого файла YAML в нашу программу Python в виде словарей, а также сериализацию словарей и сохранение их ключей. Библиотека довольно краткая и предлагает только основные функции.