использование 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, но использовать yaml
module в этом примере
# 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, надеюсь, полезные и удачи, написано Фери Лукманси