Yml файл что это python
YAML, a recursive acronym for “YAML Ain’t Markup Language”, is a human-readable data serialization language. It is often used for configuration files, but can also be used for data exchange. The most used python YAML parser is PyYAML, a library that allows you to load, parse, and write YAML, much like Python’s JSON library helps you to work with JSON.
This article teaches you how to load, read, and write YAML files with PyYAML. In addition, you’ll learn how to install it on your system, and how YAML compares to alternatives like JSON.
Table of contents
Parsing YAML strings with Python
You can use yaml.safe_load() to parse all kinds of valid YAML strings. Here’s an example that parses a simple list of items into a Python list:
0. Заставьте ваш редактор работать
Неважно, какой у вас текстовый редактор – для него наверняка существует хотя бы один плагин для работы с YAML. Если у вас такого нет, немедленно найдите и установите. Потраченное на поиск и настройку время будет многократно окупаться каждый раз, когда вам придется редактировать YAML.
Например, редактор Atom поддерживает YAML по умолчанию, а вот для GNU Emacs придется установить дополнительные пакеты, например, yaml-mode.
Emacs в режиме YAML и отображения пробелов.
Если в вашем любимом редакторе нет режима YAML, то часть проблем можно решить, поработав с настройками. Например, штатный для GNOME текстовый редактор Gedit не имеет режима YAML, но по умолчанию подсвечивает синтаксис YAML и позволяет настроить работу с отступами:
Настройка отступов в Gedit.
А плагин drawspaces для Gedit отображает пробелы в виде точек, устраняя неясности с уровнями отступа.
Иными словами, потратьте время на изучение своего любимого редактора. Выясните, что он сам или его сообщество разработки предлагают для работы с YAML, и используйте эти возможности. Вы точно об этом не пожалеете.
Addition resources
Here are some resources that you might want to continue with:
Thank you for reading my tutorials. I write these in my free time, and it requires a lot of time and effort. I use ads to keep writing these free articles, I hope you understand! Support me by disabling your adblocker on my website or, alternatively, buy me some coffee. It's much appreciated and allows me to keep working on this site!
Requirements
PyYAML requires Python 2.7 or Python 3.5+.
Запись
Теперь, когда мы узнали, как преобразовать файл YAML в словарь Python, давайте попробуем сделать что-то наоборот, то есть сериализовать словарь Python и сохранить его в файл в формате YAML. Для этого воспользуемся тем же словарем, который мы получили в результате нашей последней программы.
Метод dump() принимает словарь Python как первый, а объект File как второй параметр.
После выполнения приведенного выше кода в вашем текущем рабочем каталоге будет создан файл с именем store_file.yaml.
Еще одна полезная функция, которую предлагает библиотека YAML для метода dump(), – это параметр sort_keys. Чтобы показать, что он делает, применим его к нашему первому файлу, то есть fruit.yaml:
В выводе видно, что фрукты отсортированы в алфавитном порядке.
Documentation
Quick example (see documentation for loading multiple documents):
For more details, please check PyYAML Documentation.
4. Читайте спеки
Создание файла YAML
Для дальнейшей работы нам понадобится файл с содержимым, как в примере ниже. Создайте его и назовите client.yaml.
Пример 3. Чтение ключей и значений из файла YAML
Давайте напишем код для чтения и вывода ключей и значений из файла client.yaml по отдельности. После загрузки содержимого файла в переменную read_data используем функцию item() для чтения каждого ключа и соответствующего значения. Для перебора всего содержимого файла и вывода в консоль пар «ключ-значение» воспользуемся вложенным циклом for .
Обратите внимание, что содержимое файла не отсортировано, поскольку мы не использовали функцию dump() .
3. Парсите много и часто
Иногда на проблему полезно взглянуть под другим углом. Если вам трудно представить взаимосвязи между данными в YAML, можно временно преобразовать их в нечто более привычное.
Например, если вам удобно работать со словарными списками или с JSON, то YAML можно преобразовать в JSON всего двумя командами в интерактивной оболочке Python. Допустим, у вас есть YAML-файл mydata.yaml, тогда вот как это будет выглядеть:
На эту тему можно найти массу других примеров. Кроме того, в наличии множество онлайн-конвертеров и локальных парсеров. Так что не стесняйтесь переформатировать данные, когда видите в них только непонятную мешанину.
Заключение
В этой статье мы на нескольких примерах разобрали, как читать файлы YAML в Python. Конечно, с практикой придёт большее понимание, как работать с библиотекой PyYAML. А сейчас можно запустить код из примеров, которые мы привели выше, и удостовериться, что тема чтения файлов YAML полностью понятна.
Чтение файлов
В этом разделе мы увидим, как читать файлы 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.
Download and Installation
The current stable release of PyYAML: 5.3.
Unpack the archive and install the package by executing
If you want to use LibYAML bindings, you need to download and install LibYAML. Then you may install the bindings by executing
The source distribution includes a comprehensive test suite. To run the tests, type
Why use YAML with Python?
If you ask me, YAML is perfect for configuration files. That’s exactly how I, and many other developers, use it the most. Others seem to agree, as many large projects, like Docker and Kubernetes, use YAML to define deployments. It has a richer syntax than the often used alternative, .ini files, but is still nice on the eyes and simple to write and parse.
There are some downsides to using YAML with Python too, though:
- YAML is not part of the standard Python library, while XML and JSON are
- Its dependence on indentation is frustrating sometimes (however, Python developers are used to that, right?)
- It’s perhaps a bit too versatile for simple use-cases, like data exchange of simple objects.
If you’re looking for a good data format for data exchange and storage, I recommend JSON, XML, or other more efficient formats like protocol buffers and Avro.
Thank you for reading my tutorials. I write these in my free time, and it requires a lot of time and effort. I use ads to keep writing these free articles, I hope you understand! Support me by disabling your adblocker on my website or, alternatively, buy me some coffee. It's much appreciated and allows me to keep working on this site!
Заключение
В этом кратком руководстве мы узнали, как установить библиотеку Python YAML (pyyaml) для управления файлами в формате YAML. Мы рассмотрели загрузку содержимого файла YAML в нашу программу Python в виде словарей, а также сериализацию словарей и сохранение их ключей. Библиотека довольно краткая и предлагает только основные функции.
YAML расшифровывается как Yet Another Mark-up Language, что означает «Еще один язык разметки». Этот формат файлов сейчас очень популярен для хранения сериализованных данных, которые достаточно удобочитаемы для человека.
Такой формат в основном используется для файлов конфигурации, но может применяться и для других целей. Содержимым такого файла могут быть различные типы скалярных данных, например число, строка и т.д. Так же это могут быть составные данные, такие как список или словарь. Расширение YAML-файлов – .yaml .
В Python есть несколько модулей для чтения файлов YAML. Сегодня мы поговорим о том, как читать файлы YAML в Python, а точнее — покажем, как это делается при помощи модуля PyYAML.
6. Дилемма «табуляция или пробелы»
Вам придется решить дилемму «табуляция или пробелы?». Не в глобальном смысле, а лишь на уровне вашей организации, или хотя бы проекта. Неважно, будет ли при этом использоваться пост-обработка скриптом sed, настройка текстовых редакторов на машинах программистов или же поголовное взятие расписок о строгом соблюдении указаний линтера под угрозой увольнения, но все члены вашей команды, которые так или иначе касаются YAML, в обязательном порядке должны использовать только пробелы (как того требует спецификация YAML).
В любом нормальном текстовом редакторе можно настроить автозамену табуляции на заданное количество пробелов, поэтому бунта приверженцев клавиши Tab можно не бояться.
Как хорошо известно каждому ненавистнику YAML, на экране не видно разницы между табуляцией и пробелами. А когда чего-то не видно, об этом, как правило, вспоминают в последнюю очередь, после того, как перебрали, проверили и устранили все остальные возможные проблемы. Час времени, убитый на поиск кривой табуляции или блока пробелов, просто вопиет о том, что вам над срочно создать политику использования того или другого, а затем реализовать железобетонную проверку ее соблюдения (например, через Git-хук для принудительного прогона через линтер).
Parsing files with multiple YAML documents
YAML allows you to define multiple documents in one file, separating them with a triple dash ( --- ). PyYAML will happily parse such files too, and return a list of documents. You can do so by using the yaml.safe_load_all() function. This function returns a generator that in turn will return all documents, one by one.
Note that the file needs to be opened as long as you’re reading documents from the YAML, so you have to do your processing within the with clause. Here’s an interactive example that demonstrates this function:
5. Псевдоконфиги
При написании книги или статьи всегда полезно сперва набросать предварительный план, хотя бы в виде оглавления. Так же и с YAML. Скорее всего, вы представляете, какие данные надо записать в файл YAML, но не очень понимаете, как связать их друг с другом. Поэтому прежде чем ваять YAML, нарисуйте псевдоконфиг.
Псевдоконфиг похож на псевдокод, где не надо заботиться о структуре или отступах, отношениях «родитель-потомок», наследовании и вложенности. Так и здесь: вы рисуете итерации данных по мере того, как они возникают у вас в голове.
Псевдоконфиг с перечислением программистов (Martin и Tabitha) и их навыков (языков программирования: Python, Perl, Pascal и Lisp, Fortran, Erlang, соответственно).
Нарисовав псевдоконфиг на листе бумаги, внимательно проанализируйте его и, если все в порядке, оформите в виде валидного YAML-файла.
2. Пишите на Python, а не на YAML
Если вас реально бесит YAML, просто не пишите на нем, в буквальном смысле. Бывает, что YAML – это единственный формат, который воспринимается приложением. Но и в этом случае необязательно создавать YAML-файл. Пишите на том, что вам нравится, а потом конвертируйте. Например, для Python есть отличная библиотека pyyaml и целых два способа конвертирования: самоконвертирование и конвертирование через скрипты.
Самоконвертирование
В этом случае файл с данными заодно является и Python-скриптом, который генерирует YAML. Этот способ лучше всего подходит для небольших наборов данных. Вы просто пишите JSON-данные в переменную Python, предваряете это директивой import, а в конце файла добавляете три строчки для реализации вывода.
Теперь запускаем это файл на Python-е и на выходе получаем файл output.yaml:
Конвертирование через скрипты
В этом случае сначала пишем на JSON-е, а затем запускаем конвертор в виде отдельного Python-скрипта, который на выходе дает YAML. По сравнению с предыдущим этот способ лучше масштабируется, поскольку конвертирование отделено данных.
Затем создадим простой скрипт-конвертор и сохраним его под именем json2yaml.py. Этот скрипт импортирует оба модуля — YAML и JSON Python, а также загружает указанный пользователем файл JSON, выполняет конвертирование и пишет данные в файл output.yaml.
Сохраните этот скрипт в system path и запускайте по мере необходимости:
Для начала
Конечно же, прежде чем решать какие-либо задачи, нужно установить модуль PyYAML. Это, пожалуй, лучший модуль Python для чтения файлов YAML. Однако он не устанавливается вместе с Python по умолчанию. Поэтому, прежде чем проверять примеры, которые мы разберем ниже, вам придется его установить.
Чтобы установить PyYAML, выполните следующую команду:
pip install pyyaml
History
- Rebuild wheels using latest Cython for Python 3.7 support.
- Source and binary distributions are rebuilt against the latest versions of Cython and LibYAML.
- Do not try to build LibYAML bindings on platforms other than CPython; this fixed installation under Jython (Thank to olt(at)bogosoft(dot)com).
- Clear cyclic references in the parser and the emitter (Thank to kristjan(at)ccpgames(dot)com).
- LibYAML bindings are rebuilt with the latest version of Cython.
- Dropped support for Python 2.3 and 2.4; currently supported versions are 2.5 to 3.2.
- Fixed use of uninitialized memory when emitting anchors with LibYAML bindings (Thank to cegner(at)yahoo-inc(dot)com).
- Fixed emitting incorrect BOM characters for UTF-16 (Thank to Valentin Nechayev)
- Fixed the emitter for folded scalars not respecting the preferred line width (Thank to Ingy).
- Fixed a subtle ordering issue with emitting %TAG directives (Thank to Andrey Somov).
- Fixed performance regression with LibYAML bindings.
- Python 3 support (Thank to Erick Tryzelaar).
- Use Cython instead of Pyrex to build LibYAML bindings.
- Refactored support for unicode and byte input/output streams.
- The emitter learned to use an optional indentation indicator for block scalar; thus scalars with leading whitespaces could now be represented in a literal or folded style.
- The test suite is now included in the source distribution. To run the tests, type python setup.py test .
- Refactored the test suite: dropped unittest in favor of a custom test appliance.
- Fixed the path resolver in CDumper .
- Forced an explicit document end indicator when there is a possibility of parsing ambiguity.
- More setup.py improvements: the package should be usable when any combination of setuptools , Pyrex and LibYAML is installed.
- Windows binary packages are built against LibYAML-0.1.2.
- Minor typos and corrections. Thank to Ingy dot Net and Andrey Somov.
- Fix Python 2.5 compatibility issues.
- Fix numerous bugs in the float handling.
- Fix scanning some ill-formed documents.
- Other minor fixes.
- Fix win32 installer. Apparently bdist_wininst does not work well under Linux.
- Fix a bug in add_path_resolver.
- Add the yaml-highlight example. Try to run on a color terminal: python yaml_hl.py
- Initial release. The version number reflects the codename of the project (PyYAML 3000) and differenciates it from the abandoned PyYaml module.
Reading and parsing a YAML file with Python
Once we have the YAML parser imported, we can load a YAML file and parse it. YAML files usually carry the extension .yaml or .yml . Let’s work with the following example YAML file, called config.yaml :
Loading, parsing, and using this configuration file is very similar to loading JSON with the Python JSON library. First, we open the file. Next, we parse it with the yaml.safe_load() function. Please note that I changed the output a little to make it more readable for you:
The YAML parser returns a regular Python object that best fits the data. In this case, it’s a Python dictionary. This means all the regular dictionary features can be used, like using get() with a default value.
Here’s the same example, but interactive, so you can experiment with this for yourself:
Английский для программистов
Наш телеграм канал с тестами по английскому языку для программистов. Английский это часть карьеры программиста. Поэтому полезно заняться им уже сейчас
YAML is a data serialization format designed for human readability and interaction with scripting languages.
PyYAML is a YAML parser and emitter for the Python programming language.
- a completeYAML 1.1 parser. In particular, PyYAML can parse all examples from the specification. The parsing algorithm is simple enough to be a reference for YAML parser implementors.
- Unicode support including UTF-8/UTF-16 input/output and *
- low-level event-based parser and emitter API (like SAX).
- high-level API for serializing and deserializing native Python objects (like DOM or pickle).
- support for all types from the YAML types repository. A simple extension API is provided.
- both pure-Python and fast LibYAML-based parsers and emitters.
- relatively sensible error messages.
Пример 1. Чтение содержимого YAML после преобразования объекта Python
После установки пакета PyYAML модуль YAML можно импортировать в скрипт для чтения содержимого YAML путем преобразования объекта Python.
Для создания содержимого YAML (путем сериализации содержимого объекта Python) используется функция dump() модуля yaml.
Давайте напишем код для генерации и вывода в консоль потока YAML путем преобразования содержимого объекта Python. По умолчанию функция dump() сортирует содержимое словаря на основе ключей.
После запуска кода мы получим следующий результат:
Элементы всех словарей списка Python преобразованы в элементы содержимого YAML. При этом вывод отсортирован по ключам словаря. Поэтому значение ключа author было выведено первым, а значение ключа price – последним.
7. Лучше меньше да лучше (или больше – это меньше)
Некоторые люди любят писать на YAML, поскольку он подчеркивает структуру. При этом они активно используют отступы, чтобы выделять блоки данных. Это такое своего рода жульничество для имитации языков разметки, в которых используются явные разделители.
Вот пример такой структурированности из документации Ansible:
Кому-то такой вариант помогает разложить в голове структуру YAML, других он наоборот раздражает массой ненужных, на их взгляд, отступов.
Но если вы являетесь владельцем YAML-документа и отвечаете за его сопровождение, то вы и только вы должны определять, как использовать отступы. Если вас раздражают большие отступы, сведите их к минимуму, который только возможен согласно спецификации YAML. Например, вышеприведенный файл из документации Ansible без каких бы то ни было потерь можно переписать вот так:
Установка
Процесс установки YAML довольно прост. Это можно сделать двумя способами, начнем с простого.
Метод 2: через источник
Если у вас не установлен pip или у вас возникли проблемы с описанным выше методом, вы можете перейти на исходную страницу библиотеки. Загрузите репозиторий в виде zip-файла, откройте терминал или командную строку и перейдите в каталог, в который загружен файл. Когда вы окажетесь там, выполните следующую команду:
Writing (or dumping) YAML to a file
Although most will only read YAML as a configuration file, it can be very handy to write YAML as well. Example use cases could be:
- Create an initial configuration file with current settings for your user
- To save state of your program in an easy to read file (instead of using something like Pickle)
In the following example, we’ll:
- Create a list with names as we did before
- Save the names to a YAML formatted file with yaml.dump
- Read and print the file, as proof that everything worked as expected
Here’s the same code as a non-interactive example:
Installing and importing PyYAML
There are multiple Python packages that can parse YAML data. However, PyYAML is the most prevalent and also the most complete implementation for parsing YAML. PyYAML is not part of the standard Python library, meaning you need to install it with Pip. Use the following command to install PyYAML, preferable in a virtual environment:
On some systems you need to use pip3:
To use PyYAML in your scripts, import the module as follows. Note that you don’t import ‘pyyaml’, but simply ‘yaml’:
Author and Copyright
Copyright (c) 2017-2019 Ingy döt Net Copyright (c) 2006-2016 Kirill Simonov
The PyYAML module was written by Kirill Simonov. It is now maintained by the YAML community.
Мы все любим Ansible, но Ansible – это YAML. Для конфигурационных файлов существует масса форматов: списки значений, пары «параметр-значение», INI-файлы, YAML, JSON, XML и множество других. Однако по нескольким причинам из всех них YAML часто считается особенно трудным. В частности, несмотря на его освежающий минимализм и впечатляющие возможности для работы с иерархическими значениями, синтаксис YAML может раздражать своим Python-образными подходом к отступам.
Если вас бесит YAML, вы можете – и должны! – предпринять 10 следующих шагов, чтобы снизить свое раздражение до приемлемого уровня и полюбить YAML. Как и положено настоящему списку, наша десятка советов будет нумероваться с нуля, медитацию и духовные практики добавляем по желанию ;-)
Convert JSON to YAML
For the sake of completeness, let’s do the reverse too: convert JSON to YAML:
Метод 1: через точку
Самый простой способ установить библиотеку YAML в Python – через диспетчер пакетов pip. Если в вашей системе установлен pip, выполните следующую команду, чтобы загрузить и установить YAML:
Примеры кода
В этом разделе мы узнаем, как обрабатывать (манипулировать) файлами YAML, начиная с того, как их читать, то есть как загружать их в наш скрипт Python, чтобы мы могли использовать их в соответствии с нашими потребностями.
1. Используйте линтер (linter)
В идеале языки программирования и языки разметки используют предсказуемый синтаксис. Компьютеры хорошо справляются с предсказуемостью, поэтому еще в 1978 году возникла концепция линтера. Если за 40 лет своего существования она прошла мимо вас и вы до сих пор не пользуетесь YAML-линтером, то самое время попробовать yamllint.
Установить yamllint можно с помощью штатного менеджера пакетов Linux. Например, в Red Hat Enterprise Linux 8 или Fedora это делается так:
Затем вы просто запускаете yamllint, передавая ему YAML-файл для проверки. Вот как это выглядит, если передать линтеру файл с ошибкой:
Цифры слева – это не время, а координаты ошибки: номер строки и столбца. Описание ошибки может вам ни о чем не говорить, зато вы точно знаете, где она находится. Просто посмотрите на это место в коде, и, скорее всего, все станет ясно.
Когда yamllint не находит ошибок в файле, на экран ничего не выводится. Если вас пугает такая тишина и хочется немного больше обратной связи, то можно запускать линтер с условной командой echo через двойной амперсанд (&&), вот так:
В POSIX двойной амперсанд срабатывает тогда и только тогда, когда предшествующая команда возвращает 0. А yamllint как раз возвращает количество найденных ошибок, поэтому вся эта условная конструкция и работает.
Related posts you might like
About Erik van Baaren
Erik is the owner of Python Land and the author of many of the articles and tutorials on this website. He's been working as a professional software developer for 25 years, and he holds a Master of Science degree in computer science. His favorite language of choice: Python! Writing good articles takes time and effort. Did you like this tutorial? You can buy him a coffee to show your appreciation.
В этом руководстве мы узнаем, как использовать библиотеку YAML в Python 3. В последние годы она стала очень популярной благодаря использованию для хранения данных в виде сериализованных файлов конфигурации. Поскольку YAML по сути является форматом данных, библиотека YAML довольно простая, поскольку единственная необходимая функциональность – это возможность анализировать файлы в формате YAML.
В этой статье мы начнем с рассмотрения того, как данные хранятся в файле YAML, а затем загрузим эти данные в объект Python. Наконец, мы узнаем, как сохранить объект Python в файле YAML.
Прежде чем мы двинемся дальше, есть несколько предварительных условий для этого урока. Вы должны иметь базовое представление о синтаксисе Python или иметь хотя бы начальный опыт программирования на каком-либо другом языке.
What is YAML?
The YAML logo
According to the official site (1) , YAML is a human-friendly data serialization language for all programming languages. YAML is most often used for configuration files, but it’s also used for data exchange.
YAML is easy to write and read for humans, even for non-programmers. At the same time, it’s also easy to parse YAML, especially with Python and the PyYAML library! Its human-friendliness and readability is the biggest advantage YAML has over other formats, like JSON and XML.
These are the most prominent features of YAML:
- You can use comments in YAML files
- You can store multiple documents in one YAML file, with the --- separator. A feature often used in Kubernetes definitions.
- It’s easy to read for humans
- It’s easy to parse for computers
1) Fun fact, the official YAML website is written in the form of valid YAML files.
PyYAML safe_load() vs load()
You will encounter many examples of PyYAML usage where load() is used instead of safe_load() . I intentionally didn’t tell you about the load() function until now. Since most people have a job to do and tend to quickly copy-paste some example code, I wanted them to use the safest method of parsing YAML with Python.
However, if you’re curious about the difference between these two, here’s the short summary: load() is a very powerful function, just like pickle, if you know that function. Both are very insecure methods because they allow an attacker to execute arbitrary code. PyYAML’s load function allows you to serialize and deserialize complete Python objects and even execute Python code, including calls to the os.system library, which can execute any command on your system.
In recent PyYAML versions, the load() function is deprecated and will issue a big fat warning when you use it in an insecure way.
If you’re parsing regular YAML files, like 99% of us do, you should always use safe_load() , since it only contains a subset of the load function. All the scary, arbitrary code execution type of stuff is stripped out.
8. Используйте заготовки
Если при заполнении файла YAML вы постоянно повторяете одни и те же ошибки, имеет смысл вставить в него шаблон-заготовку в виде комментария. Тогда в следующий раз можно будет просто скопировать эту заготовку и вписать туда реальные данные, например:
Пример 2. Чтение содержимого из файла YAML
В данном примере мы будем использовать файл client.yaml, созданный ранее.
Напишем следующий код для чтения отсортированного на основе ключей содержимого файла client.yaml .
Функция load() используется для чтения полного содержимого нашего файла. Эта функция вернет содержимое файла в виде списка словарей Python. Затем функция dump() преобразует список в поток YAML, который мы после выведем в консоль.
При запуске этого кода получим следующий вывод:
После преобразования содержимого файла client.yaml в список словарей Python каждый словарь был преобразован в элемент YAML-контента, как и в предыдущем примере. Значение параметра sort_key функции dump() по умолчанию — True . Поэтому в выводе мы видим контент YAML, отсортированный по ключам.
9. Используйте что-то другое
Если приложение не держит вас мертвой хваткой, то, возможно, стоит сменить YAML на другой формат. Со временем конфигурационные файлы могут перерастать себя и тогда лучше преобразовать их в простые скрипты на Lua или Python.
YAML – отличная штука, которую многие любят за минимализм и простоту, но это далеко не единственный инструмент в вашем арсенале. Так что иногда от него можно отказаться. Для YAML легко найти библиотеки парсинга, поэтому, если вы предложите удобные варианты миграции, ваши пользователи относительно безболезненно переживут такой отказ.
Если же без YAML никак не обойтись, то возьмите на вооружение эти 10 советов и победите свою неприязнь к YAML раз и навсегда!
Convert YAML to JSON using Python
If you need to convert YAML to JSON, you can simply parse the YAML as we did above. In the next step, you can use the JSON module to convert the object to JSON.
In this example, we open a YAML-based configuration file, parse it with PyYAML, and then write it to a JSON file with the JSON module:
Here’s the same code as a non-interactive example:
Пример 4. Чтение содержимого YAML-файла в список словарей
Функция safe_load() используется для преобразования содержимого файла YAML в список словарей Python. Эту функцию также можно использовать для загрузки данных из ненадежных источников.
Давайте напишем код для загрузки содержимого файла YAML (с помощью функции safe_load() ) и вывода загруженного содержимого в консоль.
В выводе получаем список словарей:
Читайте также: