yaml tutorial comprehensive guide yaml using python
Ten samouczek YAML wyjaśnia, czym jest YAML, podstawowe pojęcia YAML, takie jak typy danych, walidator YAML, parser, edytor, pliki, itp. Za pomocą przykładów kodu w języku Python:
Przetwarzanie tekstu w informatyce pomaga programistom w tworzeniu konfigurowalnych programów i aplikacji. Języki znaczników odgrywają istotną rolę w przechowywaniu i wymianie danych w formacie czytelnym dla człowieka.
Ponadto programiści używają języków znaczników jako powszechnych i standardowych formatów wymiany danych między różnymi systemami. Trochę przykłady języków znaczników to HTML, XML, XHTML i JSON.
Udostępniliśmy informacje na temat jeszcze jednego języka znaczników w tym łatwym do wykonania samouczku YAML.
Ten samouczek pomaga czytelnikom znaleźć odpowiedzi na poniższe pytania. Uczniowie mogą podjąć pierwsze kroki i zrozumieć tajemnicę języków znaczników w ogóle, a YAML w szczególności.
Pytania obejmują:
- Dlaczego potrzebujemy języków znaczników?
- Co oznacza YAML?
- Dlaczego powstał YAML?
- Dlaczego musimy się uczyć YAML?
- Dlaczego dzisiaj ważne jest, aby nauczyć się YAML?
- Jakie typy danych mogę przechowywać w YAML?
Ten przewodnik jest przydatny dla doświadczonych czytelników, także wtedy, gdy omawiamy pojęcia w kontekście programowania w ogóle, a także w kontekście testowania oprogramowania. Omówimy tutaj również takie tematy, jak serializacja i deserializacja.
Czego się nauczysz:
Co to jest YAML
Twórcy YAML początkowo nazwali go „Jeszcze innym językiem znaczników”. Jednak z czasem akronim zmienił się na „YAML nie jest językiem MarkUp”. YAML to akronim odnoszący się do samego siebie i nazywany akronimem rekurencyjnym.
Możemy wykorzystać ten język do przechowywania danych i konfiguracji w formacie czytelnym dla człowieka. YAML to podstawowy język do nauki. Jego konstrukcje są również łatwe do zrozumienia.
Clark, Ingy i Oren stworzyli YAML, aby rozwiązać złożoność rozumienia innych języków znaczników, które są trudne do zrozumienia, a krzywa uczenia się jest również bardziej stroma niż nauka języka YAML.
Aby uczynić naukę wygodniejszą, jak zawsze, korzystamy z przykładowego projektu. Hostujemy ten projekt na Github z licencją MIT, aby każdy mógł wprowadzać modyfikacje i przesłać żądanie ściągnięcia, jeśli jest to wymagane.
Możesz sklonować projekt za pomocą poniższego polecenia.
git clone git@github.com:h3xh4wk/yamlguide.git
Jednak w razie potrzeby możesz pobierz plik zip plik kodu i przykładów.
Alternatywnie, czytelnicy mogą sklonować ten projekt przy pomocy IntelliJ IDEA. Przed sklonowaniem projektu wypełnij sekcję dotyczącą wymagań wstępnych, aby zainstalować Python i skonfigurować go za pomocą IntelliJ IDEA.

Dlaczego potrzebujemy języków znaczników
Niemożliwe jest zapisanie wszystkiego w kodzie oprogramowania. Dzieje się tak, ponieważ od czasu do czasu musimy utrzymywać kod i musimy wyodrębnić szczegóły z zewnętrznych plików lub baz danych.
Najlepszą praktyką jest zredukowanie kodu do minimum i utworzenie go w taki sposób, aby nie wymagał modyfikacji dla różnych potrzebnych danych wejściowych.
Na przykład, możemy napisać funkcję, która pobierze dane wejściowe z zewnętrznego pliku i wydrukuje jego zawartość wiersz po wierszu, zamiast pisać kod i dane razem w jednym pliku.
Jest uważany za najlepszą praktykę, ponieważ oddziela obawy związane z tworzeniem danych i tworzeniem kodu. Programistyczne podejście do abstrakcji danych z kodu zapewnia łatwą konserwację.
Języki znaczników ułatwiają nam przechowywanie informacji hierarchicznych w bardziej przystępnym i lżejszym formacie. Pliki te można wymieniać między programami przez Internet bez zużywania dużej przepustowości i obsługują najpopularniejsze protokoły.
Te języki są zgodne z uniwersalnym standardem i obsługują różne kodowania, aby obsługiwać znaki prawie ze wszystkich języków mówionych na świecie.
Najlepszą rzeczą w językach znaczników jest to, że ich ogólne użycie nie jest związane z żadną komendą systemową, a ta cecha czyni je bezpieczniejszymi i jest powodem ich powszechnego i światowego przyjęcia. Dlatego możesz nie znaleźć żadnych poleceń YAML, które moglibyśmy bezpośrednio uruchomić, aby utworzyć jakiekolwiek dane wyjściowe.
Korzyści z używania pliku YAML
YAML ma wiele zalet. Poniższa tabela przedstawia porównanie YAML i JSON. JSON to skrót od JavaScript Object Notation i używamy go jako formatu wymiany danych.
Atrybut | YAML | JSON |
---|---|---|
Gadatliwość | Mniej gadatliwy | Bardziej szczegółowe |
Typy danych | Obsługuje złożone typy danych. | Nie obsługuje złożonych typów danych. |
Komentarze | Obsługuje pisanie komentarzy za pomocą „#”. | Nie obsługuje pisania komentarzy. |
Czytelność | Bardziej czytelne dla człowieka. | Mniej czytelny dla człowieka. |
Odniesienia do siebie | Obsługuje odniesienia do elementów w tych samych dokumentach za pomocą znaków „&” i *. | Nie obsługuje odwoływania się do siebie. |
Wiele dokumentów | Obsługuje wiele dokumentów w jednym pliku. | Obsługuje pojedynczy dokument w jednym pliku. |
Ze względu na zalety YAML w porównaniu z innymi formatami plików, takimi jak JSON, YAML jest bardziej rozpowszechniony wśród programistów ze względu na swoją wszechstronność i elastyczność.
Wymagania wstępne
Najpierw instalujemy Python, a następnie konfigurujemy Python i jego pakiety za pomocą IntelliJ IDEA. Dlatego przed kontynuowaniem zainstaluj IntelliJ IDEA, jeśli nie został jeszcze zainstalowany.
Zainstaluj Python
Wykonaj poniższe czynności, aby zainstalować i skonfigurować język Python w systemie Windows 10.
Krok 1
darmowe strony z anime do oglądania online
Pobierz Python i zainstaluj go, wybierając konfigurację, jak pokazano na poniższym obrazku.

Krok 2
Rozpocznij konfigurację i wybierz dostosuj instalację. Zaznacz pole wyboru Dodanie Pythona do PATH .

Krok 3
Dostosuj lokalizację języka Python wyświetlaną na obrazku.

Krok 4
Kontynuuj instalację. Na końcu kreatora instalacji Wyłącz ograniczenie ścieżki w systemie Windows, klikając opcję w kreatorze.

Teraz konfiguracja Pythona jest zakończona.
Skonfiguruj Python za pomocą IntelliJ IDEA
Skonfigurujmy teraz IntelliJ IDEA w Pythonie. Pierwszym krokiem jest zainstalowanie wtyczek, aby móc pracować nad projektami w języku Python.
Zainstaluj wtyczki Python
Zainstaluj Python Community Edition
polecenie cut w systemie unix z przykładami

Zainstaluj Python Security

Wykonaj poniższe kroki, aby zakończyć konfigurację.
Krok 1
Użyj menu Plik i przejdź do ustawień platformy. Kliknij na Dodaj przycisk SDK .

Krok 2
Wybierz Opcja środowiska wirtualnego i wybierz podstawowy interpreter języka Python jako ten, który został zainstalowany w poprzednim kroku.

Krok 3
Teraz wybierz środowisko wirtualne utworzone w poprzednim kroku w Ustawienia zestawu SDK projektu .

Zalecamy jedno środowisko wirtualne dla jednego projektu.
Krok 4 (opcjonalnie)
Otwórz plik config.py w eksploratorze projektu i kliknij wymagania dotyczące instalacji , jak pokazano na poniższym obrazku.

Zignoruj wymaganie ipython, jeśli jest wymagane, odznaczając opcję w oknie dialogowym Wybierz pakiet.

Teraz możesz przejść do następnej sekcji, aby poznać podstawy YAML.
Podstawy YAML
W tej sekcji omówimy podstawy YAML z pomocą przykładowego pliku o nazwach config.yml i config.py. Jesteśmy głęboko przekonani, że wyjaśnianie pojęć YAML równolegle z jego wykorzystaniem w języku programowania sprawia, że nauka staje się lepsza.
Dlatego wyjaśniając podstawy w YAML, wykorzystujemy również Python do odczytu i zapisu danych przechowywanych w YAML.
Teraz utwórzmy lub otwórzmy config.yml w naszych odpowiednich edytorach i zrozummy 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
Zauważ, że pliki YAML mają.lyrozbudowa. W języku rozróżniana jest wielkość liter. Do wcięć używamy spacji, a nie tabulatorów.
Oprócz tych podstaw przyjrzyjmy się typom danych. We wspomnianym YAML przedstawiliśmy informacje w quizie. Quiz jest przedstawiany jako węzeł poziomu głównego, zawierający atrybuty, takie jak opis, pytania i odpowiedzi.
Typy danych YAML
YAML może przechowywać skalary, sekwencje i mapowania. Pokazaliśmy, jak zapisać wszystkie niezbędne typy danych w pliku config.yml.
Skalary to łańcuchy, liczby całkowite, zmiennoprzecinkowe i logiczne. Dane typu Ciągi znajdują się w cudzysłowach ”. Jednak YAML nie narzuca pisania ciągów w podwójnych cudzysłowach i możemy użyć> lub | do pisania długich ciągów w wielu wierszach.
Spójrz na różne typy danych i zmapowane wartości w poniższej tabeli.
Typ danych | Przykłady typów danych w Config.yml |
---|---|
Strunowy Ciągi znaków można przechowywać z cudzysłowami lub bez. | kartkówka: opis:> Ten quiz ma na celu naukę języka YAML pytania: - „Kogo więcej można znaleźć w sieci?” odpowiedzi: - koty |
Liczba całkowita i zmiennoprzecinkowa Liczby całkowite i zmiennoprzecinkowe są wymienione w ich oryginalnej formie | kartkówka: pytania: - „Jaka jest wartość liczby pi?” - „Ilu maksymalnych członków może grać w TT?” odpowiedzi: - 3.141592653589793 - 4 |
Boolean Wartości logiczne są przechowywane przy użyciu ciągu znaków prawda / fałsz lub tak / nie | kartkówka: pytania: - „Czy pluton jest powiązany ze związkami platonicznymi?” - „Czy nie wiesz, że Wszechświat ciągle się rozszerza?” odpowiedzi: - prawdziwe - nie rób |
Sekwencje Sekwencje są tworzone za pomocą nawiasów kwadratowych (. | kartkówka: odpowiedzi: - (8, „pluton”) |
Bibliografia Odwoływanie się do siebie jest używane za pomocą & i * | # jawna konwersja danych i ponowne wykorzystanie bloków danych dodatkowy: refer: & id011 # podaj odniesienie do danych # Inne wartości ponownie: * id011 # wywołaj dane, podając odniesienie |
Poniżej wymieniono niektóre z dodatkowych elementów pliku YAML, na które warto zwrócić uwagę.
Dokument
Teraz zwróć uwagę na trzy kreski -. Oznacza początek dokumentu. Przechowujemy pierwszy dokument z quizem jako elementem głównym, a opis, pytania i odpowiedzi jako elementy podrzędne wraz z powiązanymi z nimi wartościami.
Jawne typy danych
Obserwuj klucz sekcji o nazwie extra w config.yml. Widzimy, że za pomocą podwójnych wykrzykników możemy wyraźnie wspomnieć o typach danych wartości przechowywanych w pliku. Konwertujemy liczbę całkowitą na liczbę zmiennoprzecinkową za pomocą !! float. Używamy !! str, aby przekonwertować liczbę całkowitą na łańcuch, a !! int, aby zamienić łańcuch na liczbę całkowitą.
Pakiet YAML w Pythonie pomaga nam w czytaniu pliku YAML i przechowywaniu go wewnętrznie jako słownik. Python przechowuje klucze słownika jako ciągi znaków i automatycznie konwertuje wartości na typy danych Pythona, chyba że wyraźnie zaznaczono, używając „!!”.
Przeczytaj plik YAML w Pythonie
Ogólnie rzecz biorąc, używamy edytora YAML i walidatora YAML w momencie pisania YAML. YAML Validator sprawdza plik w momencie pisania.
Pakiet Python YAML ma wbudowany parser YAML, który analizuje plik przed zapisaniem go w pamięci.
Teraz utwórzmy i otwórzmy config.py w naszych odpowiednich edytorach z poniższą zawartością.
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)
Aby sprawdzić, czy wykonałeś opisane powyżej kroki, uruchom config.py.
Otwórz plik config.py w IntelliJ IDEA, zlokalizuj główny blok i uruchom plik, używając ikony odtwarzania.

Po uruchomieniu pliku widzimy konsolę z danymi wyjściowymi.

W funkcji read_yaml otwieramy plik config.yml i używamy metody safe_load pakietu YAML, aby odczytać strumień jako słownik Pythona, a następnie zwracamy ten słownik za pomocą słowa kluczowego return.
Zmienna my_config przechowuje zawartość pliku config.yml jako słownik. Używając ładnego pakietu drukowania Pythona o nazwie pprint, drukujemy słownik na konsoli.
Zwróć uwagę na powyższe dane wyjściowe. Wszystkie znaczniki YAML odpowiadają typom danych Pythona, dzięki czemu program może dalej używać tych wartości. Ten proces konstruowania obiektów Pythona na podstawie danych wejściowych nazywa się deserializacją.
Napisz plik YAML w Pythonie
Otwórz plik config.py i dodaj następujące wiersze kodu tuż pod metodą read_yaml i powyżej głównego bloku pliku.
def write_yaml(data): ''' A function to write YAML file''' with open('toyaml.yml', 'w') as f: yaml.dump(data, f)
W metodzie write_yaml otwieramy plik o nazwie toyaml.yml w trybie zapisu i używamy metody zrzutu pakietów YAML, aby zapisać dokument YAML do pliku.
Teraz dodaj poniższe linie kodu na końcu pliku config.py
# write A python object to a file write_yaml(my_config)
Zapisz config.py i uruchom plik za pomocą poniższego polecenia lub ikony odtwarzania w IDE.
python config.py
Widzimy, że powyższe polecenie drukuje zawartość config.yml na konsoli lub na wyjściu systemu. Program w Pythonie zapisuje tę samą zawartość do innego pliku o nazwie toyaml.yml. Proces zapisywania obiektu Pythona do pliku zewnętrznego nazywa się serializacją.
Wiele dokumentów w YAML
YAML jest dość wszechstronny i możemy przechowywać wiele dokumentów w jednym pliku YAML.
Utwórz kopię pliku config.yml jako configs.yml i wklej poniższe wiersze na końcu pliku.
--- 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
Trzy myślniki - w powyższym fragmencie oznacza początek nowego dokumentu w tym samym pliku. Korzystanie z | po tagu opisu umożliwia nam napisanie wielowierszowego tekstu typu string. W nowym dokumencie pytania i odpowiedzi są przechowywane jako oddzielne mapowania zagnieżdżone w pytaniach.
Teraz utwórz nowy plik o nazwie configs.py i wklej do niego poniższy kod.
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)
Zwróć uwagę na zmiany w funkcjach read_yaml i write_yaml. W read_yaml używamy metody safe_load_all pakietu YAML, aby odczytać wszystkie dokumenty obecne w configs.yml jako listę. Podobnie, w write_yaml używamy metody dump_all do zapisania listy wszystkich wcześniej przeczytanych dokumentów do nowego pliku o nazwie toyaml.yml.
Teraz uruchom configs.py.
python configs.py
Wynik powyższego polecenia jest wyświetlany poniżej.
({'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?'}}}})
Wynik jest podobny do wspomnianego wcześniej pojedynczego dokumentu. Python konwertuje każdy dokument w configs.yml na słownik Pythona. Ułatwia dalsze przetwarzanie i wykorzystanie wartości.
Często Zadawane Pytania
Podczas pracy z YAML możesz napotkać poniższe pytania.
fazy cyklu życia rozwoju systemu wraz z przykładami
P # 1) Czy można zachować kolejność mapowań YAML?
Odpowiedź: Tak, możliwe jest dostosowanie domyślnego zachowania programów ładujących w pakiecie pyYAML Pythona. Obejmuje użycie OrderedDicts i przesłanianie programu rozpoznawania bazowego metodami niestandardowymi, jak pokazano tutaj .
Q # 2) Jak przechowywać obraz w YAML?
Odpowiedź: Możesz zakodować base64 obraz i zachować go w YAML, jak pokazano poniżej.
image: !!binary | iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==
P # 3) Jaka jest różnica między> i | tagi w YAML?
Odpowiedź: Zarówno>, jak i | pozwalają na zapisywanie wartości w wielu wierszach w YAML. Używamy więcej niż symbol> do pisania wieloliniowych ciągów i | do reprezentowania wartości dosłownych. Wartości zapisane przy użyciu | nie trzeba uciekać. Na przykład, możemy przechowywać kod HTML za pomocą |.
template: | This is a test paragraph
This is another paragraph
P # 4) Jakie jest znaczenie… na końcu pliku YAML.
Odpowiedź: Trzy kropki… to opcjonalne identyfikatory. Można ich użyć do oznaczenia końca dokumentu w strumieniu.
Q # 5) Jak pisać komentarze w pliku YAML?
Odpowiedź: Używamy #, aby napisać komentarz w jednym wierszu. YAML nie obsługuje komentarzy wielowierszowych. Dlatego musimy użyć znaku # w wielu wierszach, jak pokazano poniżej.
# this is # a single line as well as multi-line # comment
Wniosek
W tym przewodniku omówiliśmy kroki przygotowania środowiska programistycznego zarówno w systemie Windows, jak i Linux, aby rozpocząć pracę z YAML. Omówiliśmy prawie wszystkie koncepcje podstawowych typów danych YAML, edytora YAML i parsera YAML.
Podkreśliliśmy również zalety korzystania z YAML w porównaniu z innymi językami znaczników i przedstawiliśmy przykłady kodu za pomocą pomocniczego przykładowego projektu. Mamy nadzieję, że teraz uczniowie będą mogli używać YAML do wyodrębniania danych z logiki aplikacji w celu pisania wydajnego i łatwego w utrzymaniu kodu.
Miłej nauki !!
rekomendowane lektury
- Samouczek Pythona dla początkujących (praktyczne BEZPŁATNE szkolenie Python)
- Wprowadzenie do języka Python i proces instalacji
- Python Django Tutorial - Pierwsze kroki z Django
- Python DateTime Tutorial z przykładami
- Samouczek obsługi plików w języku Python: jak tworzyć, otwierać, czytać, pisać
- Samouczek TestComplete: kompleksowy przewodnik po narzędziu do testowania GUI dla początkujących
- Instrukcje sterujące w języku Python (Python Continue, Break and Pass)
- Pojęcia dotyczące OOP w Pythonie (klasy Pythona, obiekty i dziedziczenie)