yaml tutorial comprehensive guide yaml using python
Tento výukový program YAML vysvetľuje, čo je YAML, základné koncepty YAML, ako sú dátové typy, YAML Validator, Parser, Editor, súbory atď., Pomocou príkladov kódu pomocou Pythonu:
Spracovanie textu v informatike pomáha programátorom vytvárať konfigurovateľné programy a aplikácie. Značkovacie jazyky majú zásadnú úlohu pri ukladaní a výmene údajov v formáte čitateľnom pre človeka.
Programátori navyše používajú značkovacie jazyky ako bežné a štandardné formáty výmeny údajov medzi rôznymi systémami. Niektoré príklady značkových jazykov zahŕňajú HTML, XML, XHTML a JSON.
V tomto ľahko sledovateľnom výučbe YAML sme zdieľali informácie o jednom ďalšom značkovacom jazyku.
Tento výukový program pomáha čitateľom nájsť odpovede na nižšie uvedené otázky. Študenti môžu podniknúť prvé kroky a porozumieť tajomstvu značkovacích jazykov všeobecne a konkrétne YAML.
Medzi otázky patria:
- Prečo potrebujeme značkové jazyky?
- Čo znamená YAML?
- Prečo vznikol YAML?
- Prečo sa musíme naučiť YAML?
- Prečo je dnes dôležité naučiť sa YAML?
- Aký typ údajov môžem uložiť do YAML?
Táto príručka je užitočná pre skúsených čitateľov aj pri diskusiách o konceptoch v kontexte programovania všeobecne a tiež v kontexte testovania softvéru. Tu sa budeme venovať aj témam ako Serializácia a Deserializácia.
Čo sa dozviete:
Čo je YAML
Tvorcovia YAML ho pôvodne pomenovali „Yet Another Markup language“. Časom sa však skratka zmenila na „YAML nie je jazyk MarkUp“. YAML je skratka, ktorá na seba odkazuje a nazýva sa rekurzívna skratka.
Tento jazyk môžeme využiť na ukladanie údajov a konfiguráciu v ľudsky čitateľnom formáte. YAML je základný jazyk, ktorý sa treba naučiť. Jeho konštrukcia je tiež ľahko pochopiteľná.
char do reťazca c ++
Clark, Ingy a Oren vytvorili YAML na riešenie zložitosti porozumenia iným značkovým jazykom, ktorým je ťažké porozumieť, a krivka učenia je tiež strmšia ako učenie sa YAML.
Aby bolo učenie pohodlnejšie, ako vždy, využívame ukážkový projekt. Tento projekt hostíme na serveri Github s licenciou MIT, aby ktokoľvek mohol vykonávať úpravy a v prípade potreby odoslať žiadosť o stiahnutie.
Projekt môžete klonovať pomocou nižšie uvedeného príkazu.
git clone git@github.com:h3xh4wk/yamlguide.git
Ak je to však potrebné, môžete stiahnite si zip súbor pre kód a príklady.
Prípadne môžu čitatelia klonovať tento projekt pomocou IntelliJ IDEA. Pred klonovaním projektu vyplňte časť nevyhnutných predpokladov na inštaláciu Pythonu a jeho konfiguráciu pomocou IntelliJ IDEA.

Prečo potrebujeme značkové jazyky
Nie je možné napísať všetko do softvérového kódu. Je to preto, lebo musíme občas udržiavať kód a potrebujeme abstraktovať špecifiká pre externé súbory alebo databázy.
Osvedčeným postupom je znížiť kód na čo najmenšiu možnú mieru a vytvoriť ho takým spôsobom, že nepotrebuje úpravy pre rôzne vstupy údajov, ktoré vyžaduje.
Napríklad, môžeme napísať funkciu, ktorá odoberá vstupné údaje z externého súboru a tlačí ich obsah riadok po riadku, namiesto toho, aby sme kód a údaje písali spolu do jedného súboru.
Považuje sa to za najlepší postup, pretože oddeľuje záujmy vytvárania údajov a vytvárania kódu. Programovací prístup získavania údajov z kódu zaisťuje ľahkú údržbu.
Značkovacie jazyky nám uľahčujú ukladanie hierarchických informácií v prístupnejšom a ľahšom formáte. Tieto súbory je možné vymieňať medzi programami cez internet bez potreby veľkej šírky pásma a podpory najbežnejších protokolov.
Tieto jazyky sa riadia univerzálnym štandardom a podporujú rôzne kódovania, aby podporovali znaky takmer zo všetkých hovorených jazykov na svete.
Najlepšie na značkovacích jazykoch je, že ich všeobecné použitie nie je spojené so žiadnym príkazom systému. Táto vlastnosť ich robí bezpečnejšími a je dôvodom ich rozsiahleho a celosvetového prijatia. Preto možno nenájdete žiadne YAML príkazy, ktoré by sme mohli priamo spustiť a vytvoriť akýkoľvek výstup.
Výhody použitia súboru YAML
YAML má veľa výhod. Nasledujúca tabuľka zobrazuje porovnanie medzi YAML a JSON. JSON znamená JavaScript Object Notation a používame ho ako formát výmeny údajov.
Atribút | YAML | JSON |
---|---|---|
Výrečnosť | Menej verbálne | Podrobnejšie |
Dátové typy | Podporuje komplexné dátové typy. | Nepodporuje zložité dátové typy. |
Pripomienky | Podporuje písanie komentárov pomocou znaku „#“. | Nepodporuje písanie komentárov. |
Čitateľnosť | Čitateľnejšie pre ľudí. | Menej čitateľné človekom. |
Referencie na seba | Podporuje odkazovanie na prvky v rovnakých dokumentoch pomocou znakov „&,“ a *. | Nepodporuje odkazovanie na seba. |
Viacero dokumentov | Podporuje viac dokumentov v jednom súbore. | Podporuje jeden dokument v jednom súbore. |
Kvôli výhodám YAML oproti iným formátom súborov, ako je JSON, je YAML medzi vývojármi rozšírenejší pre svoju univerzálnosť a flexibilitu.
Predbežné požiadavky
Najskôr nainštalujeme Python a potom nakonfigurujeme Python a jeho balíčky s IntelliJ IDEA. Pred pokračovaním preto nainštalujte IntelliJ IDEA, ak ešte nie je nainštalovaný.
Nainštalujte si Python
Podľa týchto pokynov nainštalujete a nastavíte Python v systéme Windows 10.
Krok 1
Stiahnite si Python a nainštalujte ho výberom nastavenia, ako je znázornené na nasledujúcom obrázku.

Krok 2
Spustite inštaláciu a vyberte možnosť prispôsobiť inštaláciu. Začiarknite políčko Pridanie Pythonu do PATH .

Krok č
Prispôsobte umiestnenie Pythonu tak, ako je zobrazené na obrázku.

Krok č
Pokračujte v inštalácii. Na konci sprievodcu inštaláciou Zakážte limit cesty v systéme Windows kliknutím na príslušnú možnosť v Sprievodcovi.

Teraz je nastavenie Pythonu dokončené.
Nakonfigurujte Python pomocou IntelliJ IDEA
Poďme si teraz nakonfigurovať IntelliJ IDEA na Python. Prvým krokom je inštalácia doplnkov, aby bolo možné pracovať na projektoch Pythonu.
Nainštalujte si Python Pluginy
Nainštalujte si Python Community Edition

Nainštalujte si zabezpečenie Pythonu

Podľa pokynov uvedených nižšie dokončite konfiguráciu.
Krok 1
Použite ponuku Súbor a prejdite na nastavenia platformy. Klikni na Pridať tlačidlo SDK .

Krok 2
Vyberte ikonu Možnosť virtuálneho prostredia a vyberte Pythonov základný tlmočník ako ten, ktorý bol nainštalovaný v predchádzajúcom kroku.

Krok č
Teraz vyberte virtuálne prostredie vytvorené v predchádzajúcom kroku pod Nastavenia Project SDK .

Pre jeden projekt odporúčame jedno virtuálne prostredie.
Krok č. 4 [voliteľné]
Otvorte súbor config.py z prieskumníka projektu a kliknite na inštalačné požiadavky , ako je znázornené na obrázku nižšie.

Ak je to potrebné, ignorujte požiadavku ipython zrušením začiarknutia niektorej možnosti v dialógovom okne Vybrať balík.

Teraz môžete prejsť na ďalšiu časť, kde sa dozviete základné informácie o YAML.
Základy YAML
V tejto časti sa zmienime o základoch YAML pomocou ukážkového súboru s názvom config.yml a config.py. Pevne veríme, že vysvetlenie konceptov YAML súbežne s ich použitím v programovacom jazyku umožňuje lepšie učenie.
Preto pri vysvetľovaní základných informácií v YAML zahrňujeme aj použitie Pythonu na čítanie a zápis údajov uložených v YAML.
Teraz si vytvoríme alebo otvoríme súbor config.yml v našich príslušných editoroch a pochopíme YAML.
jo! poslať najlepšiu e-mailovú službu
--- 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
Všimnite si, že súbory YAML majú.lypredĺženie. V jazyku sa rozlišujú veľké a malé písmená. Na odsadenie používame medzery a nie tabulátory.
Spolu s týmito základmi pochopme dátové typy. V spomenutom YAML sme informácie predstavili v kvíze. Kvíz je zobrazený ako uzol na koreňovej úrovni, ktorý má atribúty ako popis, otázky a odpovede.
Dátové typy YAML
YAML môže ukladať skaláre, sekvencie a mapovania. Ako zapísať všetky potrebné dátové typy sme si ukázali v súbore config.yml.
Skaláre sú reťazce, celé čísla, plaváky a boolovské hodnoty. Údaje typu Struny sú uvedené v úvodzovkách “. YAML však neukladá reťazce na písanie v úvodzovkách a môžeme použiť> alebo | na písanie dlhých reťazcov do viacerých riadkov.
V nasledujúcej tabuľke sa pozrite na rôzne typy údajov a namapované hodnoty.
Dátový typ | Príklady dátových typov v súbore Config.yml |
---|---|
String Struny môžu byť uložené s úvodzovkami alebo bez nich. | kvíz: popis:> Tento kvíz sa má naučiť YAML otázky: - „Kto sa nachádza viac na webe?“ odpovede: - mačky |
Celé číslo a plavák Celé čísla a plavák sú uvedené v pôvodnej podobe | kvíz: otázky: - 'Aká je hodnota pí?' - 'Koľko maximálnych členov môže hrať TT?' odpovede: - 3,141592653589793 - 4 |
Boolovský Booleovské hodnoty sa ukladajú pomocou reťazca true / false alebo yes / no | kvíz: otázky: - 'Súvisí pluto s platonickými vzťahmi?' - 'Nevieš, že vesmír sa stále rozširuje?' odpovede: - pravda - nie |
Sekvencie Sekvencie sa vytvárajú pomocou hranatých zátvoriek [. | kvíz: odpovede: - [8, 'pluto'] |
Referencie Vlastné odkazovanie sa používa pomocou & a * | # explicitná konverzia údajov a opätovné použitie dátových blokov navyše: refer: & id011 # uveďte odkaz na údaje # Ostatné hodnoty ešte raz: * id011 # údaje o hovore uvedením referencie |
Nižšie sú uvedené niektoré z ďalších zaujímavých prvkov súboru YAML.
Dokument
Teraz si všimnite tri pomlčky -. Znamená to začiatok dokumentu. Prvý dokument s kvízom uložíme ako koreňový prvok a popis, otázky a odpovede ako podradené prvky s pridruženými hodnotami.
Explicitné typy údajov
Sledujte kľúč sekcie nazývaný extra v súbore config.yml. Vidíme, že pomocou dvojitých výkričníkov môžeme výslovne spomenúť datové typy hodnôt uložených v súbore. Celé číslo prevádzame na float pomocou !! float. Na prevod celého čísla na reťazec používame reťazec !! str a na prevod celého čísla na reťazec !! int.
Balík YAML od spoločnosti Python nám pomáha čítať súbor YAML a interne ho ukladať ako slovník. Python ukladá kľúče slovníka ako reťazce a automaticky prevádza hodnoty na dátové typy Pythonu, pokiaľ to nie je výslovne uvedené pomocou „!!“.
Prečítajte si súbor YAML v Pythone
Všeobecne v čase písania YAML používame editor YAML a validátor YAML. YAML Validator skontroluje súbor v čase písania článku.
Balík Python YAML má zabudovaný analyzátor YAML, ktorý analyzuje súbor pred jeho uložením do pamäte.
Teraz vytvoríme a otvoríme config.py v našich príslušných editoroch s obsahom uvedeným nižšie.
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)
Ak chcete vyskúšať, či ste vykonali vyššie uvedené kroky, spustite config.py.
Otvorte súbor config.py v IntelliJ IDEA, vyhľadajte hlavný blok a spustite súbor pomocou ikony prehrávania.

Po spustení súboru uvidíme konzolu s výstupom.

Vo funkcii read_yaml otvoríme súbor config.yml a pomocou metódy safe_load balíka YAML prečítame prúd ako slovník Pythonu a potom tento slovník vrátime pomocou kľúčového slova return.
Premenná my_config ukladá obsah súboru config.yml ako slovník. Pomocou pekného tlačového balíka Python s názvom pprint vytlačíme slovník do konzoly.
Všimnite si vyššie uvedený výstup. Všetky značky YAML zodpovedajú dátovým typom Pythonu, takže program môže tieto hodnoty ďalej používať. Tento proces konštrukcie objektov Pythonu zo zadávania textu sa nazýva deserializácia.
Napíšte súbor YAML v Pythone
Otvorte config.py a pridajte nasledujúce riadky kódu tesne pod metódu read_yaml a nad hlavný blok súboru.
def write_yaml(data): ''' A function to write YAML file''' with open('toyaml.yml', 'w') as f: yaml.dump(data, f)
V metóde write_yaml otvoríme v režime zápisu súbor s názvom toyaml.yml a na zápis dokumentu YAML do súboru použijeme metódu výpisu balíkov YAML.
Teraz pridajte nasledujúce riadky kódu na koniec súboru config.py
# write A python object to a file write_yaml(my_config)
Uložte súbor config.py a spustite súbor pomocou nižšie uvedeného príkazu alebo pomocou ikony prehrávania v IDE.
python config.py
Vidíme, že vyššie uvedený príkaz vytlačí obsah súboru config.yml na výstup z konzoly alebo systému. Program Python zapisuje rovnaký obsah do iného súboru s názvom toyaml.yml. Proces zápisu objektu Python do externého súboru sa nazýva Serializácia.
Viacero dokumentov v YAML
YAML je pomerne univerzálny a do jedného súboru YAML môžeme uložiť viac dokumentov.
Vytvorte kópiu súboru config.yml ako configs.yml a vložte nasledujúce riadky na koniec súboru.
--- 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
Tri pomlčky - vo vyššie uvedenom úryvku označuje začiatok nového dokumentu v rovnakom súbore. Použitie | po tagu description nám umožní napísať viacriadkový text typu string. Tu v novom dokumente sme uložili otázky a odpovede ako samostatné mapovania vnorené pod otázky.
Teraz vytvorte nový súbor s názvom configs.py a vložte do neho nižšie uvedený kód.
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)
Všimnite si zmeny vo funkciách read_yaml a write_yaml. V read_yaml používame metódu safe_load_all balíka YAML na čítanie všetkých dokumentov nachádzajúcich sa v configs.yml ako zoznam. Podobne v write_yaml používame metódu dump_all na zapísanie zoznamu všetkých predtým prečítaných dokumentov do nového súboru s názvom toyaml.yml.
Teraz spustite configs.py.
python configs.py
Výstup vyššie uvedeného príkazu je zobrazený nižšie.
[{'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?'}}}}]
Výstup je podobný vyššie uvedenému výstupu jedného dokumentu. Python prevádza každý dokument v súbore configs.yml do slovníka Python. Uľahčuje ďalšie spracovanie a použitie hodnôt.
často kladené otázky
Pri práci s YAML sa môžete stretnúť s nižšie uvedenými otázkami.
Otázka 1) Je možné zachovať Rád mapovania YAML?
Odpoveď: Áno, je možné prispôsobiť predvolené správanie nakladačov v pythonovskom balíku pyYAML. Zahŕňa použitie OrderedDicts a prepísanie Base resolvera pomocou vlastných metód, ako je to znázornené tu .
Otázka 2) Ako uložiť obrázok v YAML?
Odpoveď: Môžete base64 kódovať obrázok a uchovať ho v YAML, ako je uvedené nižšie.
image: !!binary | iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==
Otázka 3) Aký je rozdiel medzi> a | značky v YAML?
Odpoveď: > Aj | povoliť zápis hodnôt do viacerých riadkov v YAML. Na zápis viacriadkových reťazcov a | používame symbol väčšie ako> reprezentovať doslovné hodnoty. Hodnoty zapísané pomocou | netreba uniknúť. Napríklad, môžeme uložiť Html pomocou |.
template: | This is a test paragraph
This is another paragraph
Otázka č. 4) Aký je význam ... na konci súboru YAML.
Odpoveď: Tri bodky ... sú voliteľné identifikátory. Môžu byť použité na označenie konca dokumentu v streame.
Otázka č. 5) Ako písať komentáre do súboru YAML?
Odpoveď: Na napísanie jednoriadkového komentára používame #. YAML nepodporuje viacriadkové komentáre. Musíme teda použiť # vo viacerých riadkoch, ako je uvedené nižšie.
# this is # a single line as well as multi-line # comment
Záver
V tejto príručke sme sa zaoberali krokmi prípravy vývojového prostredia v systéme Windows aj Linux, aby sme mohli začať s programom YAML. Takmer sme diskutovali o všetkých konceptoch základných dátových typov YAML, editora YAML a analyzátora YAML.
Tiež sme zdôraznili výhody používania YAML oproti iným značkovacím jazykom a poskytli sme príklady kódov pomocou podporného vzorového projektu. Dúfame, že teraz môžu študenti pomocou YAML abstrahovať dáta z aplikačnej logiky a písať tak efektívny a udržiavateľný kód.
Šťastné učenie !!
Odporúčané čítanie
- Výukový program pre Python pre začiatočníkov (praktické školenie v jazyku Python ZDARMA)
- Proces predstavenia a inštalácie Pythonu
- Výukový program pre Python Django - Začíname s Django
- Výukový program pre Python DateTime s príkladmi
- Výukový program pre manipuláciu so súbormi v Pythone: Ako vytvárať, otvárať, čítať a zapisovať
- Výukový program TestComplete: Komplexná príručka nástroja na testovanie grafického používateľského rozhrania pre začiatočníkov
- Kontrolné príkazy Pythonu (Python Continue, Break and Pass)
- Koncepty OOP Pythonu (triedy, objekty a dedičnosť Pythonu)