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

  • что такое YAML
  • Установка PyYAML
  • Понимание файла YAML
  • Чтение файла YAML в Python
  • Читать документы YAML
  • Дамп YAML в Python
  • Написание файла YAML
  • Ключи сортировки YAML

Зная несколько шагов, описанных выше, я предполагаю, что установил интерпретатор python на каждом устройстве, а затем приступим.

Что такое YAML

YAML (YAML Ain’t Markup Language) - это удобный для чтения язык сериализации данных, который обычно используется для файла конфигурации, например, посмотрите файл создания докеров, здесь docker-compose.yml

version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
  redis:
    image: "redis:alpine"

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

когда вы спрашиваете, почему файл yaml не файл json, ответ: YAML легче читать и понимать, чем json

Файл YAML и файл JSON

Вот пример файла YAML и JSON, проверьте это, в чем разница между файлом YAML и файлом JSON

файл simple.yml

Origin:
   author: Dan Brown
   language: English
   publication-date: 2017-10-03
   pages: 461
   description: | When billionaire researcher Edmond Kirsch is killed, 
                  it is up to Robert Landon & Ambra Vidal to honor 
                  his memory by making public his findings concerning the 
                  origin of human life and its destiny.

Здесь simple.json

{
  "Origin": {
    "author": "Dan Brown",
    "language": "English",
     "publication-date": "2017-10-03",
     "pages": 461,
     "description": "When billionaire researcher Edmond Kirsch is killed, 
                     it is up to Robert Langdon and Ambra Vidal to honor
                     his memory  by making public his findings concerning 
                     the origin of human life and its destiny."
  }
}

Установка PyYAML

эта библиотека используется для взаимодействия python с файлом YAML, где мы можем выполнять манипуляции с YAML, такие как чтение, запись, дамп и многие другие, эту библиотеку можно найти здесь https://pypi.org/project/PyYAML/

установка с помощью пипса

pip install PyYAML

Понимание файла YAML

в этой части мы узнаем о частях файла YAML

Пробелы и отступы

пробел является частью модуля форматирования YAML. Если не указано иное, символы новой строки обозначают конец поля.

Пример, если вы структурируете документ YAML с отступом.

Уровень отступа может быть одним или несколькими пробелами. Спецификация запрещает вкладки относиться к ним по-разному

Создадим YAML-файл с именем foo.yml.

foo: bar
     please: help
     stuff:
       foo: bar
       bar: foo

Комментарии YAML

комментарии поддержки yaml, пример

# this is comments in yaml file
# file foo.yaml
foo: bar
     please: help
     stuff:
       foo: bar
       bar: foo

Управление файлами YAML

на этом этапе мы узнаем, как управлять файлом YAML с помощью python (библиотека pyyaml), включая

  • как читать файл YAML
  • запись файла YAML
  • Сортировка файла YAML

давай начнем с первого шага

Прочитать файл YAML

в этом разделе мы узнаем, как читать YAML-файл с помощью python, например, у нас есть два таких файла в формате YAML.

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

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

# load & read yaml
with open('sports.yaml', 'r') as yaml_file:
    sport_list = yaml.load(yaml_file, Loader=yaml.FullLoader)

    # get result yaml file
    print(sport_list)

теперь запустите скрипт python, в моем случае main.py поэтому запустите эту команду

python main.py

теперь мы можем видеть такой результат

В приведенном выше скрипте мы указали yaml.FullLoader в качестве значения параметра Loader, который загружает полный язык YAML.

во втором примере мы будем использовать функцию full_load внутри библиотеки pyyaml, а во втором примере мы можем читать два разных формата данных yaml в одном файле, выполняя вложенные циклы, например, как это

# full load yaml file
with open('sports.yaml', 'r') as file:
    yaml_load = yaml.full_load(file)

    # iterate list
    for datas in yaml_load:

        # getting key, and value
        for key, value in datas.items():
            print(key, value)

новый запуск скрипта python, чтобы увидеть результат

Сортировка файла YAML

Теперь в этом разделе мы узнаем, как сортировать файл YAML с помощью python (pyYAML). Пока у нас есть два примера, которые производят два формата данных, а именно dict и list, теперь мы научимся сортировать, чтобы данные можно было читать в соответствии с форматом yaml и создавать новый файл с соответствующим форматом, мы будем сортировать ключи используя sort_keys params, мы можем увидеть приложение в примере ниже

# sorting yaml
with open('sports.yaml', 'r') as files:
    data_yaml = yaml.load(files, Loader=yaml.FullLoader)

    # sorting yaml
    sort_file = yaml.dump(data_yaml, sort_keys=True)

    # get result
    print(sort_file)

запустите скрипт python, чтобы увидеть результат

Запись файла YAML

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

# data dict
dict_file = [{'sports': ['soccer', 'football', 'basketball', 'cricket', 'hockey', 'table tennis']},
             {'countries': ['Pakistan', 'USA', 'India', 'China', 'Germany', 'France', 'Spain']}]

мы можем использовать функцию дампа, как в json, но использовать yamlmodule в этом примере

# data dict
dict_file = [{'sports': ['soccer', 'football', 'basketball', 'cricket', 'hockey', 'table tennis']},
             {'countries': ['Pakistan', 'USA', 'India', 'China', 'Germany', 'France', 'Spain']}]

# write yaml
with open('sports.yaml', 'w+') as file:
    docx = yaml.dump(dict_file, file)

теперь запустите скрипт python, тогда sports.yaml будет сгенерирован автоматически

Вывод

работать с файлами YAML с помощью python, читать лучше, чем JSON, и мы можем писать, читать, сортировать и многое другое, что можно сделать на python, точно так же, как файлы JSON, надеюсь, полезные и удачи, написано Фери Лукманси