yaml tutorial comprehensive guide yaml using python
Цей підручник з YAML пояснює, що таке YAML, основні концепції YAML, такі як типи даних, валідатор YAML, аналізатор, редактор, файли тощо за допомогою прикладів коду з використанням Python:
Обробка тексту в інформатиці допомагає програмістам створювати програми та програми, що налаштовуються. Мови розмітки відіграють важливу роль у зберіганні та обміні даними у зручному для читання форматі.
Крім того, програмісти використовують мови розмітки як загальноприйняті та стандартні формати обміну даними між різними системами. Дещо приклади з мов розмітки включають HTML, XML, XHTML та JSON.
Ми поділилися інформацією про ще одну мову розмітки в цьому простому підручнику YAML.
Цей підручник допомагає читачам знайти відповіді на згадані нижче питання. Учні можуть зробити перші кроки і зрозуміти таємницю мов розмітки загалом та YAML зокрема.
Питання включають:
- Навіщо нам потрібні мови розмітки?
- Що означає YAML?
- Чому був створений YAML?
- Чому нам потрібно вивчати YAML?
- Чому сьогодні важливо вивчати YAML?
- Який тип даних я можу зберігати в YAML?
Цей посібник корисний для досвідчених читачів, оскільки ми обговорюємо концепції в контексті програмування загалом, а також у контексті тестування програмного забезпечення. Тут ми також розглянемо такі теми, як серіалізація та десеріалізація.
Що ви дізнаєтесь:
Що таке YAML
Спочатку творці YAML назвали його 'Ще однією мовою розмітки'. Однак з часом абревіатура змінилася на 'YAML Ain't MarkUp language'. YAML - це скорочення, яке відноситься до себе і називається рекурсивним.
Ми можемо використовувати цю мову для зберігання даних та конфігурації в зручному для читання форматі. YAML - це елементарна мова для вивчення. Його конструкції теж легко зрозуміти.
Кларк, Інгі та Орен створили YAML для вирішення складності розуміння інших мов розмітки, які важко зрозуміти, а крива навчання також крутіша, ніж вивчення YAML.
Щоб зробити навчання комфортнішим, як завжди, ми використовуємо зразок проекту. Ми розміщуємо цей проект на Github з ліцензією MIT, щоб усі могли вносити зміни та подавати запит на витяг, якщо потрібно.
Ви можете клонувати проект за допомогою команди нижче.
git clone git@github.com:h3xh4wk/yamlguide.git
Однак, якщо потрібно, ви можете завантажити zip - - файл коду та приклади.
Або ж читачі можуть клонувати цей проект за допомогою IntelliJ IDEA. Будь ласка, заповніть розділ про передумови для встановлення Python та налаштування його за допомогою IntelliJ IDEA перед клонуванням проекту.
Навіщо нам потрібні мови розмітки
Неможливо написати все в програмному коді. Це тому, що нам час від часу потрібно підтримувати код, і нам потрібно абстрагувати специфіку до зовнішніх файлів або баз даних.
Кращою практикою є зменшення коду до мінімуму, наскільки це можливо, і створення його таким чином, що він не потребує модифікації для різних вводів даних, які він потребує.
Наприклад, ми можемо написати функцію, щоб взяти вхідні дані із зовнішнього файлу та надрукувати їх вміст, рядок за рядком, а не писати код та дані разом в одному файлі.
Це вважається найкращою практикою, оскільки воно відокремлює проблеми створення даних та створення коду. Підхід програмування вилучення даних з коду забезпечує легке обслуговування.
Мови розмітки полегшують нам зберігання ієрархічної інформації у більш доступному та легшому форматі. Ці файли можуть обмінюватися між програмами через Інтернет, не витрачаючи багато пропускної здатності, і підтримують найпоширеніші протоколи.
Ці мови відповідають універсальному стандарту і підтримують різні кодування для підтримки символів майже з усіх розмовних мов світу.
як писати тести сценаріїв uat - -
Найкраще в мовах розмітки полягає в тому, що їх загальне використання не пов’язане з жодними системними командами, і ця характеристика робить їх безпечнішими та є причиною їх широкого поширення у всьому світі. Тому ви можете не знайти жодних команд YAML, які ми можемо безпосередньо запустити для створення будь-яких вихідних даних.
Переваги використання файлу YAML
YAML має багато переваг. У наведеній нижче таблиці показано порівняння між YAML та JSON. JSON розшифровується як JavaScript Object Notation, і ми використовуємо його як формат обміну даними.
Атрибут | ЯМЛ | JSON |
---|---|---|
Багатослівність | Менш багатослівний | Більш багатослівний |
Типи даних | Підтримує складні типи даних. | Не підтримує складні типи даних. |
Коментарі | Підтримує написання коментарів за допомогою '#'. | Не підтримує написання коментарів. |
Читаність | Більш зрозумілий для людей. | Менше читається людиною. |
Самодовідкові посилання | Підтримує посилання на елементи в тих самих документах, використовуючи '&,' та *. | Не підтримує самостійне посилання. |
Кілька документів | Підтримує кілька документів в одному файлі. | Підтримує один документ в одному файлі. |
Завдяки перевагам YAML перед іншими форматами файлів, такими як JSON, YAML є більш поширеним серед розробників завдяки своїй універсальності та гнучкості.
Передумови
Спочатку ми встановлюємо Python, а потім налаштовуємо Python та його пакети за допомогою IntelliJ IDEA. Тому, будь ласка, встановіть IntelliJ IDEA, якщо він ще не встановлений, перш ніж продовжувати.
Встановіть Python
Виконайте ці кроки, щоб встановити та налаштувати Python у Windows 10.
Крок 1
Завантажте Python та встановіть його, вибравши установку, як показано на малюнку нижче.
Крок No2
Запустіть установку та виберіть налаштувати установку. Установіть прапорець Додавання Python до PATH .
Крок No3
Налаштуйте розташування Python, як показано на зображенні.
Крок No4
Просувайтесь з установкою. В кінці майстра встановлення Вимкніть обмеження шляху у Windows, натиснувши опцію у майстрі.
Тепер налаштування Python завершено.
Налаштування Python за допомогою IntelliJ IDEA
Давайте зараз налаштуємо IntelliJ IDEA на Python. Першим кроком є встановлення Плагінів, щоб мати можливість працювати над проектами Python.
Встановіть модулі Python
Встановіть версію спільноти Python
Встановіть Python Security
Виконайте наступні кроки, щоб завершити налаштування.
Крок 1
Скористайтеся меню «Файл» і перейдіть до налаштувань платформи Клацніть на Додати кнопку SDK .
Крок No2
Виберіть Опція віртуального середовища і виберіть базовий інтерпретатор Python як той, який був встановлений на попередньому кроці.
Крок No3
Тепер виберіть віртуальне середовище, створене на попередньому кроці під Налаштування проекту SDK .
Ми рекомендуємо одне віртуальне середовище для одного проекту.
Крок №4 (Необов’язково)
Відкрийте файл config.py із провідника проекту та натисніть встановити вимоги , як показано на зображенні нижче.
Ігноруйте вимогу ipython, якщо потрібно, знявши прапорець у діалоговому вікні Вибір пакета.
Тепер ви можете перейти до наступного розділу, щоб вивчити основи YAML.
Основи YAML
У цьому розділі ми згадуємо основи YAML за допомогою прикладу файлу, який називається config.yml та config.py. Ми твердо впевнені, що пояснення концепцій YAML паралельно з його використанням у мові програмування покращує навчання.
Тому, пояснюючи основи YAML, ми також передбачаємо використання Python для читання та запису даних, що зберігаються в YAML.
Тепер давайте створимо або відкриємо config.yml у відповідних редакторах та зрозуміємо YAML.
--- quiz: description: > 'This Quiz is to learn YAML.' questions: - ['How many planets are there in the solar system?', 'Name the non-planet'] - 'Who is found more on the web?' - 'What is the value of pi?' - 'Is pluto related to platonic relationships?' - 'How many maximum members can play TT?' - 'Which value is no value?' - 'Don't you know that the Universe is ever-expanding?' answers: - [8, 'pluto'] - cats - 3.141592653589793 - true - 4 - null - no # explicit data conversion and reusing data blocks extra: refer: &id011 # give a reference to data x: !!float 5 # explicit conversion to data type float y: 8 num1: !!int '123' # conversion to integer str1: !!str 120 # conversion to string again: *id011 # call data by giving the reference
Зверніть увагу, що файли YAML мають.lyрозширення. Мова чутлива до регістру. Для відступу ми використовуємо пробіли, а не вкладки.
Разом із цими основами, давайте розберемось у типах даних. У згаданому YAML ми представили інформацію у вікторині. Вікторина зображена як вузол кореневого рівня, що має такі атрибути, як опис, запитання та відповіді.
Типи даних YAML
YAML може зберігати скаляри, послідовності та відображення. Ми показали, як записати всі необхідні типи даних у файл config.yml.
Скаляри - це рядки, цілі числа, плаваючі та логічні значення. Дані типу Рядки містяться у подвійних лапках “. Однак YAML не нав'язує написання рядків у подвійних лапках, і ми можемо використовувати> або | для написання довгих рядків у кілька рядків.
Подивіться на різні типи даних та відображені значення в таблиці нижче.
Тип даних | Приклади типів даних у Config.yml |
---|---|
Рядок Рядки можуть зберігатися з лапками або без них. | вікторина: опис:> Ця вікторина має вивчити YAML питання: - 'Хто знайшов більше в Інтернеті?' відповіді: - коти |
Ціле і плаваюче Цілі числа та плаваючі згадані в оригіналі | вікторина: питання: - 'Яке значення pi?' - 'Скільки учасників може грати в ТТ?' відповіді: - 3,141592653589793 - 4 |
Логічна Логічні дані зберігаються за допомогою рядка true / false або yes / no | вікторина: питання: - 'Чи пов’язаний Плутон із платонічними стосунками?' - 'Ви не знаєте, що Всесвіт постійно розширюється?' відповіді: - правда - не |
Послідовності Послідовності створюються за допомогою квадратних дужок [. | вікторина: відповіді: - [8, 'плутон'] |
Список літератури Самостійне посилання використовується за допомогою & та * | # явне перетворення даних та повторне використання блоків даних додатково: посилання: & id011 # дайте посилання на дані # Інші значення ще раз: * id011 # дані виклику, вказавши посилання |
Нижче наведено деякі варті уваги додаткові елементи файлу YAML.
Документ
Тепер зверніть увагу на три тире -. Це означає початок документа. Ми зберігаємо перший документ з тестом як кореневий елемент, а опис, запитання та відповіді - як дочірні елементи з відповідними значеннями.
Явні типи даних
Дотримуйтесь клавіші розділу, що називається додатково в config.yml. Ми бачимо, що за допомогою подвійних вигуків ми можемо прямо згадувати типи даних значень, що зберігаються у файлі. Ми перетворюємо ціле число у плаваючий за допомогою !! float. Ми використовуємо !! str для перетворення цілого числа в рядок, а !! int - для перетворення рядка в ціле число.
Пакет YAML Python допомагає нам читати файл YAML і зберігати його всередині словника. Python зберігає ключі словника як рядки, і автоматично перетворює значення у типи даних Python, якщо явно не вказано за допомогою “!!”.
Прочитайте файл YAML на Python
Загалом, на момент написання YAML ми використовуємо редактор YAML та валідатор YAML. YAML Validator перевіряє файл під час написання.
Пакет Python YAML має вбудований синтаксичний аналізатор YAML, який аналізує файл перед тим, як зберігати його в пам'яті.
Тепер давайте створимо та відкриємо config.py у відповідних редакторах із вмістом нижче.
import yaml import pprint def read_yaml(): ''' A function to read YAML file''' with open('config.yml') as f: config = yaml.safe_load(f) return config if __name__ == '__main__': # read the config yaml my_config = read_yaml() # pretty print my_config pprint.pprint(my_config)
Щоб перевірити, що ви виконали згадані вище кроки, запустіть config.py.
Відкрийте файл config.py в IntelliJ IDEA, знайдіть основний блок і запустіть файл за допомогою піктограми відтворення.
Після запуску файлу ми бачимо консоль з вихідними даними.
У функції read_yaml ми відкриваємо файл config.yml і використовуємо метод safe_load пакета YAML для читання потоку як словника Python, а потім повертаємо цей словник за допомогою ключового слова return.
Змінна my_config зберігає вміст файлу config.yml як словник. Використовуючи симпатичний пакет друку Python під назвою pprint, ми друкуємо словник на консолі.
Зверніть увагу на вищезазначений результат. Усі теги YAML відповідають типам даних Python, щоб програма могла надалі використовувати ці значення. Цей процес побудови об’єктів Python із введення тексту називається десериалізацією.
Запишіть файл YAML на Python
Відкрийте config.py і додайте наступні рядки коду трохи нижче методу read_yaml та над основним блоком файлу.
def write_yaml(data): ''' A function to write YAML file''' with open('toyaml.yml', 'w') as f: yaml.dump(data, f)
У методі write_yaml ми відкриваємо файл з назвою toyaml.yml у режимі запису та використовуємо метод дампа пакунків YAML для запису документа YAML у файл.
Тепер додайте наведені нижче рядки коду в кінці файлу config.py
# write A python object to a file write_yaml(my_config)
Збережіть config.py і запустіть файл, використовуючи команду нижче або використовуючи піктограму відтворення в IDE.
python config.py
Ми бачимо, що вищевказана команда друкує вміст config.yml на консолі або на виході системи. Програма Python записує той самий вміст в інший файл, який називається toyaml.yml. Процес запису об’єкта Python у зовнішній файл називається серіалізацією.
Кілька документів у YAML
YAML досить універсальний, і ми можемо зберігати кілька документів в одному файлі YAML.
Створіть копію файлу config.yml як configs.yml та вставте рядки нижче в кінець файлу.
--- quiz: description: | This is another quiz, which is the advanced version of the previous one questions: q1: desc: 'Which value is no value?' ans: Null q2: desc: 'What is the value of Pi?' ans: 3.1415
Три тире - у наведеному вище фрагменті позначає початок нового документа в тому ж файлі. Використання | після тегу опису дозволяє нам писати багаторядковий текст типу string. Тут, у новому документі, ми зберегли запитання та відповіді як окремі зіставлення, вкладені під питання.
Тепер створіть новий файл з назвою configs.py та вставте згаданий код у файл.
import yaml import pprint def read_yaml(): ''' A function to read YAML file''' with open('configs.yml') as f: config = list(yaml.safe_load_all(f)) return config def write_yaml(data): ''' A function to write YAML file''' with open('toyaml.yml', 'a') as f: yaml.dump_all(data, f, default_flow_style=False) if __name__ == '__main__': # read the config yaml my_config = read_yaml() # pretty print my_config pprint.pprint(my_config) # write A python object to a file write_yaml(my_config)
Зверніть увагу на зміни у функціях read_yaml та write_yaml. У read_yaml ми використовуємо метод safe_load_all пакета YAML для читання всіх документів, що знаходяться в configs.yml у вигляді списку. Подібним чином, в write_yaml ми використовуємо метод dump_all, щоб записати список усіх раніше прочитаних документів у новий файл, який називається toyaml.yml.
Тепер запустіть configs.py.
python configs.py
Результат роботи наведеної вище команди відображається нижче.
[{'quiz': {'answers': [[8, 'pluto'], 'cats', 3.141592653589793, True, 4, None, False], 'description': 'This Quiz is to learn YAML', 'questions': [['How many planets are there in the solar system?', 'Name the non planet'], 'Who is found more on the web?', 'What is the value of pi?', 'Is pluto related to platonic relationships?', 'How many maximum members can play TT?', 'Which value is no value?', 'Don't you know that Universe is ever-expanding?']}}, {'quiz': {'description': 'This is another quiz, which
' 'is the advanced version of the previous one
', 'questions': {'q1': {'ans': None, 'desc': 'Which value is no value?'}, 'q2': {'ans': 3.1415, 'desc': 'What is the value of Pi?'}}}}]
Вихідні дані схожі на згадані раніше вихідні дані окремого документа. Python перетворює кожен документ із configs.yml у словник Python. Це полегшує подальшу обробку та використання значень.
Часті запитання
Ви можете зіткнутися з наведеними нижче запитаннями під час роботи з YAML.
Q # 1) Чи можна зберегти Порядок відображення YAML?
Відповідь: Так, можна налаштувати поведінку навантажувачів за замовчуванням у пакеті pyYAML Python. Він передбачає використання OrderedDicts та заміну базового роздільника за допомогою спеціальних методів, як показано тут .
Q # 2) Як зберігати зображення в YAML?
Відповідь: Ви можете base64 закодувати зображення та зберегти його у YAML, як показано нижче.
image: !!binary | iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==
Q # 3) Яка різниця між> та | теги в YAML?
Відповідь: І>, і | дозволяють записувати значення у кілька рядків у YAML. Ми використовуємо більше символу> для написання багаторядкових рядків та | представляти буквальні значення. Значення, записані з використанням | не потрібно рятуватися. Наприклад, ми можемо зберігати HTML за допомогою |.
template: | This is a test paragraph
This is another paragraph
Q # 4) Яке значення має… в кінці файлу YAML.
Відповідь: Три періоди… - необов’язкові ідентифікатори. Вони можуть бути використані для позначення кінця документа в потоці.
Q # 5) Як писати коментарі у файлі YAML?
Відповідь: Ми використовуємо # для написання однорядкового коментаря. YAML не підтримує багаторядкові коментарі. Таким чином, нам потрібно використовувати # у декількох рядках, як показано нижче.
# this is # a single line as well as multi-line # comment
Висновок
У цьому посібнику ми розглянули етапи підготовки середовища розробки як для Windows, так і для Linux для початку роботи з YAML. Ми майже обговорили всі концепції основних типів даних YAML, редактор YAML та парсер YAML.
Ми також виділили переваги використання YAML щодо інших мов розмітки та навели приклади коду за допомогою допоміжного зразкового проекту. Ми сподіваємось, що тепер учні можуть використовувати YAML для абстрагування даних із логіки додатків для написання ефективного та ремонтопридатного коду.
Щасливого навчання !!
Рекомендована література
- Підручник з Python для початківців (практичне БЕЗКОШТОВНЕ навчання з Python)
- Процес введення та встановлення Python
- Підручник з Python Django - Початок роботи з Django
- Підручник з Python DateTime із прикладами
- Підручник з обробки файлів Python: Як створювати, відкривати, читати, писати
- Підручник з TestComplete: Всебічне керівництво для тестування графічного інтерфейсу для початківців
- Заяви про керування Python (продовження, розбиття та передача Python)
- Концепції ООП Python (класи, об'єкти та спадкування Python)