yaml tutorial comprehensive guide yaml using python
Tento výukový program YAML vysvětluje, co je YAML, základní pojmy YAML, jako jsou datové typy, YAML Validator, Parser, Editor, soubory atd., Pomocí příkladů kódu pomocí Pythonu:
Zpracování textu v informatice pomáhá programátorům vytvářet konfigurovatelné programy a aplikace. Značkovací jazyky hrají zásadní roli při ukládání a výměně dat ve formátu čitelném pro člověka.
Programátoři dále používají značkovací jazyky jako běžné a standardní formáty pro výměnu dat mezi různými systémy. Nějaký příklady značkovacích jazyků zahrnuje HTML, XML, XHTML a JSON.
V tomto snadno sledovatelném výukovém programu YAML jsme sdíleli informace o jednom dalším značkovacím jazyce.
Tento výukový program pomáhá čtenářům najít odpovědi na níže uvedené otázky. Studenti mohou podniknout první kroky a porozumět tajemství značkovacích jazyků obecně a zejména YAML.
Mezi otázky patří:
- Proč potřebujeme značkovací jazyky?
- Co znamená YAML?
- Proč byl YAML vytvořen?
- Proč se musíme naučit YAML?
- Proč je dnes důležité naučit se YAML?
- Jaký typ dat mohu uložit na YAML?
Tato příručka je užitečná pro zkušené čtenáře také při diskusi o konceptech v kontextu programování obecně a také v kontextu testování softwaru. Zde se také budeme zabývat tématy, jako je Serializace a Deserializace.
Co se naučíte:
Co je YAML
Tvůrci YAML jej původně pojmenovali „Yet Another Markup language“. Časem se však zkratka změnila na „YAML není jazyk MarkUp.“ YAML je zkratka, která odkazuje na sebe a nazývá se rekurzivní zkratka.
Tento jazyk můžeme využít k ukládání dat a konfigurace v čitelném formátu. YAML je základní jazyk, který se musíte naučit. Jeho konstrukce jsou také snadno pochopitelné.
Clark, Ingy a Oren vytvořili YAML, aby řešili složitost porozumění jiným značkovacím jazykům, kterým je obtížné porozumět, a křivka učení je také strmější než učení YAML.
Aby bylo učení pohodlnější, jako vždy, využíváme ukázkový projekt. Tento projekt hostujeme na Githubu s licencí MIT, aby kdokoli mohl provádět úpravy a v případě potřeby odeslat požadavek na stažení.
Projekt můžete klonovat pomocí níže uvedeného příkazu.
git clone git@github.com:h3xh4wk/yamlguide.git
V případě potřeby však můžete stáhnout zip soubor pro kód a příklady.
Alternativně mohou čtenáři klonovat tento projekt pomocí IntelliJ IDEA. Před klonováním projektu vyplňte část o předpokladech pro instalaci Pythonu a jeho konfiguraci pomocí IntelliJ IDEA.
nedefinovaný odkaz na c ++
Proč potřebujeme značkovací jazyky
Je nemožné zapsat vše do softwarového kódu. Je to proto, že čas od času potřebujeme udržovat kód a potřebujeme abstraktně specifikovat externí soubory nebo databáze.
Osvědčeným postupem je zmenšit kód na co nejmenší možnou míru a vytvořit jej tak, aby nepotřeboval úpravy pro různé vstupy dat, které to vyžaduje.
Například, můžeme napsat funkci, která vezme vstupní data z externího souboru a vytiskne jeho obsah řádek po řádku, spíše než psát kód a data společně do jednoho souboru.
Považuje se to za osvědčený postup, protože odděluje obavy z vytváření dat a vytváření kódu. Programovací přístup abstrahování dat z kódu zajišťuje snadnou údržbu.
Značkovací jazyky nám usnadňují ukládání hierarchických informací v přístupnějším a lehčím formátu. Tyto soubory lze mezi programy vyměňovat přes internet, aniž by spotřebovávali velkou šířku pásma a podporovali nejběžnější protokoly.
Tyto jazyky se řídí univerzálním standardem a podporují různá kódování pro podporu znaků téměř ze všech mluvených jazyků na světě.
Nejlepší na značkovacích jazycích je, že jejich obecné použití není spojeno s žádným systémovým příkazem, a tato vlastnost je činí bezpečnějšími a je důvodem jejich širokého a celosvětového přijetí. Proto možná nenajdete žádné příkazy YAML, které můžeme přímo spustit a vytvořit jakýkoli výstup.
Výhody používání souboru YAML
YAML má mnoho výhod. Níže uvedená tabulka ukazuje srovnání mezi YAML a JSON. JSON je zkratka pro JavaScript Object Notation a používáme ji jako formát pro výměnu dat.
Atribut | YAML | JSON |
---|---|---|
Výřečnost | Méně podrobné | Podrobnější |
Typy dat | Podporuje komplexní datové typy. | Nepodporuje složité datové typy. |
Komentáře | Podporuje psaní komentářů pomocí '#'. | Nepodporuje psaní komentářů. |
Čitelnost | Více čitelné pro člověka. | Méně čitelné pro člověka. |
Vlastní reference | Podporuje odkazování na prvky ve stejných dokumentech pomocí '&,' a *. | Nepodporuje vlastní odkazování. |
Více dokumentů | Podporuje více dokumentů v jednom souboru. | Podporuje jeden dokument v jednom souboru. |
Vzhledem k výhodám YAML oproti ostatním formátům souborů, jako je JSON, je YAML mezi vývojáři častější díky své univerzálnosti a flexibilitě.
Předběžné požadavky
Nejprve nainstalujeme Python a poté nakonfigurujeme Python a jeho balíčky pomocí IntelliJ IDEA. Než tedy budete pokračovat, nainstalujte si prosím IntelliJ IDEA, pokud již není nainstalován.
Nainstalujte Python
Při instalaci a nastavení Pythonu ve Windows 10 postupujte podle těchto pokynů.
Krok 1
Stáhněte si Python a nainstalujte jej výběrem nastavení, jak je znázorněno na následujícím obrázku.
Krok 2
Spusťte instalaci a vyberte přizpůsobit instalaci. Zaškrtněte políčko Přidání Pythonu k PATH .
Krok # 3
Upravte umístění Pythonu tak, jak je zobrazeno na obrázku.
Krok č. 4
Pokračujte v instalaci. Na konci průvodce instalací Zakažte limit cesty v systému Windows kliknutím na možnost v Průvodci.
Nyní je nastavení Pythonu dokončeno.
Nakonfigurujte Python pomocí IntelliJ IDEA
Pojďme nyní nakonfigurovat IntelliJ IDEA s Pythonem. Prvním krokem je instalace pluginů, aby bylo možné pracovat na projektech Pythonu.
Nainstalujte si Python Pluginy
Nainstalujte si Python Community Edition
Nainstalujte zabezpečení Pythonu
Konfiguraci dokončete podle následujících kroků.
Krok 1
Použijte nabídku Soubor a přejděte na nastavení platformy. Klikněte na Přidat tlačítko SDK .
Krok 2
Vybrat Možnost virtuálního prostředí a vyberte Pythonův základní tlumočník jako ten, který byl nainstalován v předchozím kroku.
Krok # 3
Nyní vyberte virtuální prostředí vytvořené v předchozím kroku pod položkou Nastavení Project SDK .
Pro jeden projekt doporučujeme jedno virtuální prostředí.
Krok č. 4 [Volitelné]
Otevřete soubor config.py z průzkumníka projektu a klikněte na požadavky na instalaci , jak je znázorněno na následujícím obrázku.
Pokud je to požadováno, ignorujte požadavek ipython zrušením zaškrtnutí možnosti v dialogovém okně Vybrat balíček.
Nyní můžete přejít k další části a naučit se základy YAML.
Základy YAML
V této části se zmíníme o základech YAML pomocí ukázkového souboru s názvem config.yml a config.py. Pevně věříme, že vysvětlení konceptů YAML souběžně s jeho použitím v programovacím jazyce umožňuje lepší učení.
Proto při vysvětlování základů v YAML také zapojujeme použití Pythonu ke čtení a zápisu dat uložených v YAML.
Nyní vytvořme nebo otevřete soubor config.yml v našich příslušných editorech a pochopte 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
Všimněte si, že soubory YAML mají.lyrozšíření. Jazyk rozlišuje velká a malá písmena. Pro odsazení používáme mezery a ne záložky.
Spolu s těmito základy pojďme pochopit datové typy. Ve zmíněném YAML jsme představili informace v kvízu. Kvíz je zobrazen jako uzel kořenové úrovně s atributy, jako je popis, otázky a odpovědi.
Datové typy YAML
YAML může ukládat skaláry, sekvence a mapování. Ukázali jsme, jak zapsat všechny potřebné datové typy v souboru config.yml.
Skaláry jsou řetězce, celá čísla, plováky a logické hodnoty. Data typu Strings jsou uvedena v uvozovkách “. YAML však neukládá psací řetězce v uvozovkách a můžeme použít> nebo | pro psaní dlouhých řetězců do více řádků.
Podívejte se na různé datové typy a namapované hodnoty v následující tabulce.
Datový typ | Příklady datových typů v souboru Config.yml |
---|---|
Tětiva Řetězce lze uložit s uvozovkami nebo bez nich. | kvíz: popis:> Tento kvíz se má naučit YAML otázky: - 'Kdo je na webu více?' odpovědi: - kočky |
Celé číslo a plovák Celá čísla a plovák jsou uvedeny v původní podobě | kvíz: otázky: - 'Jaká je hodnota pí?' - 'Kolik maximálních členů může hrát TT?' odpovědi: - 3,141592653589793 - 4 |
Booleovský Logické hodnoty se ukládají pomocí řetězce true / false nebo yes / no | kvíz: otázky: - „Souvisí pluto s platonickými vztahy?“ - 'Nevíš, že se vesmír stále rozšiřuje?' odpovědi: - skutečný - nedělej |
Sekvence Sekvence jsou vytvářeny pomocí hranatých závorek [. | kvíz: odpovědi: - [8, 'pluto'] |
Reference Vlastní odkazování se používá pomocí & a * | # explicitní převod dat a opětovné použití datových bloků další: refer: & id011 # uveďte odkaz na data # Jiné hodnoty znovu: * id011 # údaje o volání uvedením odkazu |
Níže jsou uvedeny některé z důležitých dalších prvků souboru YAML.
Dokument
Nyní si všimněte tří pomlček -. Znamená to začátek dokumentu. První dokument s kvízem uložíme jako kořenový prvek a popis, otázky a odpovědi jako podřízené prvky s přidruženými hodnotami.
Explicitní datové typy
Sledujte klíč sekce zvaný extra v souboru config.yml. Vidíme, že pomocí dvojitých vykřičníků můžeme explicitně zmínit datové typy hodnot uložených v souboru. Celé číslo převedeme na float pomocí !! float. Pro převod celého čísla na řetězec použijeme !! str a pro převod řetězce na celé číslo použijeme !! int.
Balíček YAML od Pythonu nám pomáhá při čtení souboru YAML a jeho interním ukládání jako slovníku. Python ukládá klíče slovníku jako řetězce a automaticky převádí hodnoty na datové typy Pythonu, pokud není výslovně uvedeno pomocí „!!“.
Přečtěte si soubor YAML v Pythonu
Obecně používáme editor YAML a validátor YAML v době psaní YAML. YAML Validator zkontroluje soubor v době psaní.
Balíček Python YAML má vestavěný analyzátor YAML, který analyzuje soubor před jeho uložením do paměti.
Nyní vytvořme a otevřete config.py v našich příslušných editorech s níže uvedeným obsahem.
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)
Chcete-li otestovat, že jste dokončili výše uvedené kroky, spusťte config.py.
Otevřete soubor config.py v IntelliJ IDEA, najděte hlavní blok a spusťte soubor pomocí ikony přehrávání.
Jakmile spustíme soubor, uvidíme konzolu s výstupem.
Ve funkci read_yaml otevřeme soubor config.yml a použijeme metodu safe_load balíčku YAML ke čtení streamu jako slovníku Pythonu a poté tento slovník vrátíme pomocí návratového klíčového slova.
Proměnná my_config ukládá obsah souboru config.yml jako slovník. Pomocí hezkého tiskového balíčku Pythonu zvaného pprint vytiskneme slovník do konzoly.
Všimněte si výše uvedeného výstupu. Všechny značky YAML odpovídají datovým typům Pythonu, takže program může tyto hodnoty dále používat. Tento proces konstrukce objektů Pythonu ze zadávání textu se nazývá deserializace.
Napište soubor YAML do Pythonu
Otevřete soubor config.py a přidejte následující řádky kódu těsně pod metodu read_yaml a nad hlavní blok souboru.
def write_yaml(data): ''' A function to write YAML file''' with open('toyaml.yml', 'w') as f: yaml.dump(data, f)
V metodě write_yaml otevřeme soubor s názvem toyaml.yml v režimu zápisu a pomocí metody výpisu balíčků YAML zapíšeme do souboru dokument YAML.
Nyní přidejte následující řádky kódu na konec souboru config.py
# write A python object to a file write_yaml(my_config)
Uložte soubor config.py a spusťte soubor pomocí níže uvedeného příkazu nebo pomocí ikony přehrávání v IDE.
python config.py
Vidíme, že výše uvedený příkaz vytiskne obsah config.yml na výstup konzoly nebo systému. Program Python zapisuje stejný obsah do jiného souboru s názvem toyaml.yml. Proces zápisu objektu Pythonu do externího souboru se nazývá Serializace.
Více dokumentů v YAML
YAML je poměrně univerzální a do jednoho souboru YAML můžeme uložit více dokumentů.
Vytvořte kopii souboru config.yml jako configs.yml a vložte následující řádky na konec souboru.
--- 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
Tři pomlčky - ve výše uvedeném úryvku označuje začátek nového dokumentu ve stejném souboru. Použití | po tagu description nám umožní napsat víceřádkový text typu string. Tady v novém dokumentu jsme uložili otázky a odpovědi jako samostatná mapování vnořená pod otázky.
Nyní vytvořte nový soubor s názvem configs.py a vložte do něj níže 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šimněte si změn ve funkcích read_yaml a write_yaml. V read_yaml používáme metodu safe_load_all balíčku YAML ke čtení všech dokumentů přítomných v souboru configs.yml jako seznam. Podobně v write_yaml používáme metodu dump_all k zápisu seznamu všech dříve přečtených dokumentů do nového souboru s názvem toyaml.yml.
Nyní spusťte configs.py.
python configs.py
Výstup výše uvedeného příkazu je zobrazen níže.
[{'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ý dříve zmíněnému výstupu jednoho dokumentu. Python převádí každý dokument v souboru configs.yml na slovník Pythonu. Usnadňuje další zpracování a používání hodnot.
Často kladené otázky
Při práci s YAML se můžete setkat s níže uvedenými otázkami.
Otázka č. 1) Je možné zachovat pořadí mapování YAML?
Odpovědět: Ano, je možné upravit výchozí chování zavaděčů v pythonovském balíčku pyYAML. Zahrnuje použití OrderedDicts a přepsání Base resolveru vlastními metodami, jak je znázorněno tady .
Otázka 2) Jak uložit obrázek do YAML?
Odpovědět: Můžete base64 kódovat obrázek a ponechat jej v YAML, jak je znázorněno níže.
image: !!binary | iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==
Otázka č. 3) Jaký je rozdíl mezi> a | značky v YAML?
Odpovědět: > I | povolit zápis hodnot do více řádků v YAML. Pro psaní víceřádkových řetězců a | používáme větší než symbol> reprezentovat doslovné hodnoty. Hodnoty zapsané pomocí | nemusí uniknout. Například, můžeme uložit Html pomocí |.
template: | This is a test paragraph
This is another paragraph
Otázka č. 4) Jaký je význam ... na konci souboru YAML.
Odpovědět: Tři období ... jsou nepovinné identifikátory. Ty lze použít k označení konce dokumentu ve streamu.
Otázka č. 5) Jak psát komentáře do souboru YAML?
Odpovědět: K napsání komentáře do jednoho řádku používáme #. YAML nepodporuje víceřádkové komentáře. Musíme tedy použít # ve více řádcích, jak je znázorněno níže.
# this is # a single line as well as multi-line # comment
Závěr
V této příručce jsme popsali kroky přípravy vývojového prostředí ve Windows i Linuxu, abychom mohli začít s YAML. Téměř jsme probrali všechny koncepty základních datových typů YAML, editoru YAML a analyzátoru YAML.
Také jsme zdůraznili výhody používání YAML ve srovnání s jinými značkovacími jazyky a poskytli příklady kódu pomocí podpůrného ukázkového projektu. Doufáme, že nyní mohou studenti pomocí YAML abstrahovat data z logiky aplikace a psát efektivní a udržovatelný kód.
Šťastné učení !!
Doporučené čtení
- Výukový program pro Python pro začátečníky (praktické školení v Pythonu ZDARMA)
- Proces zavedení a instalace Pythonu
- Výukový program Python Django - Začínáme s Django
- Výukový program Python DateTime s příklady
- Výukový program pro manipulaci se soubory Pythonu: Jak vytvářet, otevírat, číst a zapisovat
- Výukový program TestComplete: Komplexní průvodce nástrojem pro testování grafického uživatelského rozhraní pro začátečníky
- Ovládací příkazy Pythonu (Python Continue, Break and Pass)
- Koncepty OOP Pythonu (třídy, objekty a dědičnost Pythonu)