Чтение и запись YAML в файл в Python

Введение В этом руководстве мы узнаем, как использовать библиотеку YAML [https://wiki.python.org/moin/YAML] в Python 3. YAML означает еще один язык разметки. В последние годы он стал очень популярным благодаря использованию для хранения данных в виде сериализованных файлов конфигурации. Поскольку YAML по сути является форматом данных, библиотека YAML довольно краткая, поскольку единственная необходимая функциональность - это возможность анализировать файлы в формате YAML. В этой статье мы начнем с рассмотрения h

Вступление

В этом руководстве мы узнаем, как использовать библиотеку YAML в Python 3. YAML означает еще один язык разметки .

В последние годы он стал очень популярным благодаря использованию для хранения данных в виде сериализованных файлов конфигурации. Поскольку YAML по сути является форматом данных, библиотека YAML довольно краткая, поскольку единственная необходимая функциональность - это возможность анализировать файлы в формате YAML.

В этой статье мы начнем с рассмотрения того, как данные хранятся в файле YAML, а затем загрузим эти данные в объект Python. Наконец, мы узнаем, как сохранить объект Python в файле YAML. Итак, приступим.

Прежде чем мы двинемся дальше, есть несколько предварительных условий для этого урока. Вы должны иметь базовое представление о синтаксисе Python и / или иметь хотя бы начальный опыт программирования на каком-либо другом языке. В остальном учебник довольно прост и понятен новичкам.

Монтаж

Процесс установки YAML довольно прост. Это можно сделать двумя способами; мы начнем с простого:

Метод 1: через точку

Самый простой способ установить библиотеку YAML в Python - через диспетчер пакетов pip. Если в вашей системе установлен pip, выполните следующую команду, чтобы загрузить и установить YAML:

 $ pip install pyyaml 

Метод 2: через источник

Если у вас не установлен pip или у вас возникли проблемы с описанным выше методом, вы можете перейти на исходную страницу библиотеки. Загрузите репозиторий в виде zip-файла, откройте терминал или командную строку и перейдите в каталог, в который загружен файл. Когда вы окажетесь там, выполните следующую команду:

 $ python setup.py install 

Примеры кода YAML

В этом разделе мы узнаем, как обрабатывать (манипулировать) файлами YAML, начиная с того, как их читать, то есть как загружать их в наш скрипт Python, чтобы мы могли использовать их в соответствии с нашими потребностями. Итак, начнем.

Чтение файлов YAML в Python

В этом разделе мы увидим, как читать файлы YAML в Python.

Начнем с создания двух файлов в формате YAML.

Содержимое первого файла выглядит следующим образом:

 # fruits.yaml file 
 
 apples: 20 
 mangoes: 2 
 bananas: 3 
 grapes: 100 
 pineapples: 1 

Содержимое второго файла выглядит следующим образом:

 # categories.yaml file 
 
 sports: 
 
 - soccer 
 - football 
 - basketball 
 - cricket 
 - hockey 
 - table tennis 
 
 countries: 
 
 - Pakistan 
 - USA 
 - India 
 - China 
 - Germany 
 - France 
 - Spain 

Вы можете видеть , что fruits.yaml и categories.yaml файлы содержат различные типы данных. Первый содержит информацию только об одном объекте, то есть о фруктах, а второй содержит информацию о видах спорта и странах.

Давайте теперь попробуем прочитать данные из двух файлов, которые мы создали с помощью скрипта Python. Метод load() из yaml можно использовать для чтения файлов YAML. Взгляните на следующий сценарий:

 # process_yaml.py file 
 
 import yaml 
 
 with open(r'E:\data\fruits.yaml') as file: 
 # The FullLoader parameter handles the conversion from YAML 
 # scalar values to Python the dictionary format 
 fruits_list = yaml.load(file, Loader=yaml.FullLoader) 
 
 print(fruits_list) 

Выход:

 { 'apples': 20, 'mangoes': 2, 'bananas': 3, 'grapes': 100, 'pineapples': 1 } 

В приведенном выше скрипте мы указали yaml.FullLoader в качестве значения для Loader который загружает полный язык YAML, избегая выполнения произвольного кода. Вместо использования load последующей передачей yaml.FullLoader в качестве значения для Loader вы также можете использовать full_load() , как мы увидим в следующем примере.

Давайте теперь попробуем прочитать второй файл YAML аналогичным образом, используя скрипт Python:

 # read_categories.py file 
 
 import yaml 
 
 with open(r'E:\data\categories.yaml') as file: 
 documents = yaml.full_load(file) 
 
 for item, doc in documents.items(): 
 print(item, ":", doc) 

Так как есть 2 документа в categories.yaml файл, мы запустили цикл , чтобы прочитать их обоих.

Выход:

 sports : ['soccer', 'football', 'basketball', 'cricket', 'hockey', 'table tennis'] 
 countries : ['Pakistan', 'USA', 'India', 'China', 'Germany', 'France', 'Spain'] 

Как видно из последних двух примеров, библиотека автоматически обрабатывает преобразование данных в формате YAML в словари и списки Python.

Написание файлов YAML на Python

Теперь, когда мы узнали, как преобразовать файл YAML в словарь Python, давайте попробуем сделать что-то наоборот, то есть сериализовать словарь Python и сохранить его в файл в формате YAML. Для этого воспользуемся тем же словарем, который мы получили в результате нашей последней программы.

 import yaml 
 
 dict_file = [{'sports' : ['soccer', 'football', 'basketball', 'cricket', 'hockey', 'table tennis']}, 
 {'countries' : ['Pakistan', 'USA', 'India', 'China', 'Germany', 'France', 'Spain']}] 
 
 with open(r'E:\data\store_file.yaml', 'w') as file: 
 documents = yaml.dump(dict_file, file) 

Метод dump() принимает словарь Python как первый, а объект File как второй параметр.

После выполнения приведенного выше кода в вашем текущем рабочем каталоге будет создан store_file.yaml

 # store_file.yaml file contents: 
 
 - sports: 
 
 - soccer 
 - football 
 - basketball 
 - cricket 
 - hockey 
 - table tennis 
 - countries: 
 
 - Pakistan 
 - USA 
 - India 
 - China 
 - Germany 
 - France 
 - Spain 

Еще одна полезная функция, которую предлагает библиотека YAML для dump() - это параметр sort_keys Чтобы показать, что он делает, применим его к нашему первому файлу, то есть fruit.yaml:

 import yaml 
 
 with open(r'E:\data\fruits.yaml') as file: 
 doc = yaml.load(file, Loader=yaml.FullLoader) 
 
 sort_file = yaml.dump(doc, sort_keys=True) 
 print(sort_file) 

Выход:

 apples: 20 
 bananas: 3 
 grapes: 100 
 mangoes: 2 
 pineapples: 1 

В выводе видно, что фрукты отсортированы в алфавитном порядке.

Заключение

В этом кратком руководстве мы узнали, как установить библиотеку Python YAML (pyyaml) для управления файлами в формате YAML. Мы рассмотрели загрузку содержимого файла YAML в нашу программу Python в виде словарей, а также сериализацию словарей Python в файлы YAML и сохранение их ключей. Библиотека довольно краткая и предлагает только основные функции.

comments powered by Disqus