yaml tutorial comprehensive guide yaml using python
Ovaj YAML-ov vodič objašnjava što je YAML, osnovni koncepti YAML-a, kao što su vrste podataka, YAML validator, parser, uređivač, datoteke, itd. Uz pomoć primjera koda pomoću Pythona:
Obrada teksta u računalnoj znanosti pomaže programerima u stvaranju programa i aplikacija koji se mogu konfigurirati. Označni jezici imaju vitalnu ulogu u pohrani i razmjeni podataka u čitljivom formatu.
Nadalje, programeri koriste označne jezike kao uobičajene i standardne formate razmjene podataka između različitih sustava. Neki primjeri od označnih jezika uključuju HTML, XML, XHTML i JSON.
Podijelili smo informacije o još jednom označnom jeziku u ovom YAML vodiču koji je lako slijediti.
Ovaj vodič pomaže čitateljima u pronalaženju odgovora na dolje navedena pitanja. Učenici mogu poduzeti prve korake i razumjeti tajnu označnih jezika općenito, a posebno YAML-a.
kako otvoriti datoteku bujice
Pitanja uključuju:
- Zašto su nam potrebni označni jezici?
- Što znači YAML?
- Zašto je stvoren YAML?
- Zašto trebamo učiti YAML?
- Zašto je danas važno naučiti YAML?
- Koju vrstu podataka mogu pohraniti u YAML?
Ovaj je vodič koristan za iskusne čitatelje i dok razgovaramo o konceptima u kontekstu programiranja općenito, kao i u kontekstu testiranja softvera. Ovdje ćemo također obrađivati teme poput serializacije i deserijalizacije.
Što ćete naučiti:
Što je YAML
Stvoritelji YAML-a u početku su ga imenovali 'Još jedan označni jezik'. Međutim, s vremenom se kratica promijenila u 'YAML nije MarkUp jezik'. YAML je kratica koja se odnosi na sebe i naziva se rekurzivna kratica.
Ovaj jezik možemo koristiti za pohranu podataka i konfiguracije u čitljivom formatu. YAML je osnovni jezik za učenje. I njegove je konstrukcije lako razumjeti.
Clark, Ingy i Oren stvorili su YAML za rješavanje složenosti razumijevanja drugih označnih jezika, koji su teško razumljivi, a krivulja učenja je također strmija od učenja YAML-a.
Kako bi učenje bilo ugodnije, kao i uvijek, koristimo se primjerom projekta. Ovaj smo projekt domaćini na Githubu s licencom MIT kako bi svi mogli izvršiti izmjene i po potrebi predati zahtjev za povlačenjem.
Projekt možete klonirati pomoću naredbe u nastavku.
git clone git@github.com:h3xh4wk/yamlguide.git
Međutim, ako je potrebno, možete preuzmi zip datoteka za kod i primjere.
Čitatelji mogu klonirati ovaj projekt uz pomoć IntelliJ IDEA. Molimo dovršite odjeljak o preduvjetima za instalaciju Pythona i konfiguriranje s IntelliJ IDEA prije kloniranja projekta.

Zašto su nam potrebni označni jezici
Nemoguće je sve napisati softverskim kodom. To je zato što s vremena na vrijeme moramo održavati kôd i moramo apstrahirati detalje na vanjske datoteke ili baze podataka.
Najbolja je praksa smanjiti kod na najmanju moguću mjeru i stvoriti ga na način da ne treba modifikaciju za razne potrebne unose podataka.
Na primjer, možemo napisati funkciju za preuzimanje ulaznih podataka iz vanjske datoteke i ispis njezinog sadržaja redak po redak, umjesto pisanja koda i podataka zajedno u jednu datoteku.
Smatra se najboljom praksom jer razdvaja brige oko stvaranja podataka i izrade koda. Programski pristup apstrahiranja podataka iz koda osigurava jednostavno održavanje.
Označni jezici olakšavaju nam pohranu hijerarhijskih podataka u pristupačniji i lakši format. Te se datoteke mogu razmjenjivati između programa putem Interneta, ne trošeći puno propusnosti i podržavaju najčešće protokole.
Ovi jezici slijede univerzalni standard i podržavaju različita kodiranja kako bi podržali znakove gotovo iz svih govornih jezika na svijetu.
Najbolja stvar kod označnih jezika je što njihova općenita upotreba nije povezana s bilo kojom naredbom sustava, a ova karakteristika ih čini sigurnijima i razlog je njihovog širokog i svjetskog prihvaćanja. Stoga možda nećete pronaći nijednu YAML naredbu koju možemo izravno pokrenuti za stvaranje bilo kakvih rezultata.
Prednosti upotrebe YAML datoteke
YAML ima brojne prednosti. Tablica u nastavku prikazuje usporedbu između YAML i JSON. JSON je skraćenica od JavaScript Object Notation i koristimo ga kao format za razmjenu podataka.
Atribut | YAML | JSON |
---|---|---|
Govornost | Manje opširno | Opširnije |
Tipovi podataka | Podržava složene vrste podataka. | Ne podržava složene vrste podataka. |
Komentari | Podržava pisanje komentara korištenjem '#'. | Ne podržava pisanje komentara. |
Čitljivost | Čovjeku čitljivije. | Manje čitljivo za ljude. |
Samoreferencije | Podržava referenciranje elemenata u istim dokumentima pomoću '&,' i *. | Ne podržava samo-referenciranje. |
Više dokumenata | Podržava više dokumenata u jednoj datoteci. | Podržava jedan dokument u jednoj datoteci. |
Zbog prednosti YAML-a u odnosu na druge formate datoteka, poput JSON-a, YAML je više raširen među programerima zbog svoje svestranosti i fleksibilnosti.
Preduvjeti
Prvo instaliramo Python, a zatim konfiguriramo Python i njegove pakete s IntelliJ IDEA. Stoga, prije nastavka instalirajte IntelliJ IDEA ako već nije instaliran.
Instalirajte Python
Slijedite ove korake za instalaciju i postavljanje Pythona na Windows 10.
Korak 1
Preuzmite Python i instalirajte ga odabirom postavke kako je prikazano na donjoj slici.

Korak 2
Pokrenite instalaciju i odaberite prilagodbu instalacije. Označite potvrdni okvir Dodavanje Pythona u PATH .

Korak # 3
Prilagodite mjesto Pythona kako je prikazano na slici.

Korak # 4
Krenite s instalacijom. Na kraju čarobnjaka za instalaciju onemogućite ograničenje puta u sustavu Windows klikom na opciju u čarobnjaku.

Sada je postavljanje Pythona završeno.
Konfigurirajte Python pomoću IntelliJ IDEA
Konfigurirajmo sada IntelliJ IDEA s Pythonom. Prvi korak je instalacija dodataka kako bi se moglo raditi na Python projektima.
Instalirajte dodatke Python
Instalirajte izdanje Python Community

Instalirajte Python Security

Slijedite korake u nastavku da biste dovršili konfiguraciju.
Korak 1
Upotrijebite izbornik Datoteka i idite na postavke platforme. Klikni na Dodaj SDK gumb .

Korak 2
Odaberite Opcija virtualnog okruženja i odaberite Pythonov osnovni tumač kao onaj koji je instaliran u prethodnom koraku.

Korak # 3
Sada odaberite virtualno okruženje stvoreno u prethodnom koraku pod Postavke projekta SDK .

Za jedan projekt preporučujemo jedno virtualno okruženje.
Korak # 4 (izborno)
Otvorite datoteku config.py iz istraživača projekta i kliknite na instalirati zahtjeve , kao što je prikazano na donjoj slici.

Ako želite, zanemarite zahtjev ipythona poništavanjem oznake opcije u dijaloškom okviru Odabir paketa.

Sada možete prijeći na sljedeći odjeljak kako biste naučili osnove YAML-a.
agilna metodologija intervju i pitanja i odgovori
Osnove YAML-a
U ovom odjeljku spominjemo osnove YAML-a uz pomoć primjera datoteke nazvane config.yml i config.py. Čvrsto vjerujemo da objašnjavanje koncepata YAML-a paralelno s njegovom uporabom u programskom jeziku čini učenje boljim.
Stoga, dok objašnjavamo osnove u YAML-u, uključujemo i upotrebu Pythona za čitanje i pisanje podataka pohranjenih u YAML-u.
Ajmo sada stvoriti ili otvoriti config.yml u našim urednicima i razumjeti 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
Primijetite da YAML datoteke imaju.lyproduženje. Jezik razlikuje velika i mala slova. Za uvlačenje koristimo razmake, a ne kartice.
Zajedno s ovim osnovama, shvatimo i vrste podataka. U spomenutom YAML-u informacije smo predstavili u kvizu. Kviz je prikazan kao čvor na korijenskoj razini s atributima kao što su opis, pitanja i odgovori.
YAML tipovi podataka
YAML može pohraniti skalare, sekvence i mapiranja. Prikazali smo kako zapisati sve potrebne vrste podataka u datoteku config.yml.
Skalari su nizovi, cjelobrojni brojevi, plovci i logičke vrijednosti. Podaci tipa Strings zatvoreni su u dvostruke navodnike “. Međutim, YAML ne nameće pisanje nizova u dvostrukim navodnicima, a mi možemo koristiti> ili | za pisanje dugih nizova u više redaka.
Pogledajte razne vrste podataka i preslikane vrijednosti u donjoj tablici.
Vrsta podataka | Primjeri tipova podataka u Config.yml |
---|---|
Niz Žice se mogu pohraniti s navodnicima ili bez njih. | kviz: opis:> Ovaj kviz želi naučiti YAML pitanja: - 'Tko se više nalazi na webu?' odgovori: - mačke |
Cijeli broj i plutaj Cijeli brojevi i float spominju se u izvornom obliku | kviz: pitanja: - 'Koja je vrijednost pi?' - 'Koliko maksimalno članova može igrati TT?' odgovori: - 3,141592653589793 - 4 |
Booleova Logički se podaci pohranjuju pomoću niza true / false ili yes / no | kviz: pitanja: - 'Je li pluto povezan s platonskim vezama?' - 'Zar ne znate da se Svemir neprestano širi?' odgovori: - istina - nemoj |
Slijed Nizovi se kreiraju uz pomoć uglatih zagrada (. | kviz: odgovori: - (8, 'pluto') |
Reference Samoreferenciranje se koristi uz pomoć & i * | # eksplicitna pretvorba podataka i ponovna upotreba blokova podataka ekstra: pogledajte: & id011 # daju referencu na podatke # Ostale vrijednosti opet: * id011 # podaci poziva davanjem reference |
U nastavku su navedeni neki od vrijednih dodatnih elemenata YAML datoteke.
Dokument
Sad primijetite tri crtice -. Označava početak dokumenta. Prvi dokument pohranjujemo s kvizom kao korijenskim elementom, a opis, pitanja i odgovore kao podređene elemente s pripadajućim vrijednostima.
Eksplicitni tipovi podataka
Obratite pažnju na ključ odjeljka koji se zove extra u config.yml. Vidimo da uz pomoć dvostrukih uzvika možemo izričito spominjati tipove podataka vrijednosti pohranjenih u datoteci. Cijelu brojku pretvaramo u float pomoću !! float. Koristimo !! str za pretvaranje cijelog broja u niz, a !! int za pretvaranje niza u cijeli broj.
Pythonov YAML paket pomaže nam u čitanju YAML datoteke i interno je pohranjuje kao rječnik. Python pohranjuje ključeve rječnika kao nizove i automatski pretvara vrijednosti u tipove podataka Python, osim ako nije izričito navedeno pomoću '!!'.
Pročitajte YAML datoteku u Pythonu
Općenito, koristimo YAML Editor i YAML Validator u vrijeme pisanja YAML-a. YAML Validator provjerava datoteku u vrijeme pisanja.
Python YAML paket ima ugrađeni YAML Parser koji raščlanjuje datoteku prije nego što je pohrani u memoriju.
Ajmo sada stvoriti i otvoriti config.py u našim odgovarajućim uređivačima sa sadržajem u nastavku.
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)
Da biste testirali da li ste izvršili gore navedene korake, pokrenite config.py.
Otvorite datoteku config.py u programu IntelliJ IDEA, pronađite glavni blok i pokrenite datoteku pomoću ikone za reprodukciju.

Jednom kada pokrenemo datoteku, vidimo konzolu s izlazom.

U funkciji read_yaml otvaramo datoteku config.yml i koristimo metodu safe_load YAML paketa za čitanje toka kao Python rječnika i vraćanje ovog rječnika pomoću ključne riječi return.
varijabla my_config sprema sadržaj datoteke config.yml kao rječnik. Koristeći lijepi Pythonov paket za ispis nazvan pprint, ispisujemo rječnik na konzolu.
Primijetite gornji izlaz. Sve YAML oznake odgovaraju Pythonovim vrstama podataka, tako da program može dalje koristiti te vrijednosti. Ovaj proces konstrukcije Python objekata iz unosa teksta naziva se Deserijalizacija.
Napišite YAML datoteku u Python
Otvorite config.py i dodajte sljedeće retke koda odmah ispod metode read_yaml i iznad glavnog bloka datoteke.
def write_yaml(data): ''' A function to write YAML file''' with open('toyaml.yml', 'w') as f: yaml.dump(data, f)
U metodi write_yaml otvaramo datoteku koja se naziva toyaml.yml u načinu pisanja i koristimo metodu izbacivanja paketa YAML za pisanje YAML dokumenta u datoteku.
Sada dodajte donje retke koda na kraju datoteke config.py
# write A python object to a file write_yaml(my_config)
Spremite config.py i pokrenite datoteku pomoću naredbe u nastavku ili pomoću ikone za reprodukciju u IDE-u.
python config.py
Vidimo da gornja naredba ispisuje sadržaj config.yml na izlaz konzole ili sustava. Python program zapisuje isti sadržaj u drugu datoteku koja se naziva toyaml.yml. Proces zapisivanja Python objekta u vanjsku datoteku naziva se serializacija.
Više dokumenata u YAML-u
YAML je vrlo svestran i možemo pohraniti više dokumenata u jednu YAML datoteku.
Stvorite kopiju datoteke config.yml kao configs.yml i zalijepite donje retke na kraj datoteke.
--- 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 crtice - u gornjem isječku označava početak novog dokumenta u istoj datoteci. Korištenje | nakon što nam opisna oznaka omogućuje pisanje višerednog teksta tipa string. Ovdje smo u novom dokumentu pohranili pitanja i odgovore kao zasebna preslikavanja ugniježđena ispod pitanja.
Sada stvorite novu datoteku koja se zove configs.py i zalijepite dolje navedeni kod u datoteku.
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)
Primijetite promjene u funkcijama read_yaml i write_yaml. U read_yaml koristimo metodu safe_load_all paketa YAML za čitanje svih dokumenata prisutnih u configs.yml kao popisa. Slično tome, u write_yaml koristimo metodu dump_all za pisanje popisa svih prethodno pročitanih dokumenata u novu datoteku koja se naziva toyaml.yml.
Sada pokrenite configs.py.
python configs.py
Izlaz gornje naredbe prikazan je u nastavku.
({'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?'}}}})
Izlaz je sličan prethodno spomenutom izlazu za pojedinačni dokument. Python pretvara svaki dokument u configs.yml u Python rječnik. Olakšava daljnju obradu i upotrebu vrijednosti.
Često postavljana pitanja
Tijekom rada s YAML-om možete naići na pitanja u nastavku.
pitanja za razgovor za službu za pomoć
P # 1) Je li moguće sačuvati Red YAML mapiranja?
Odgovor: Da, moguće je prilagoditi zadano ponašanje utovarivača u Pythonovom pyYAML paketu. Uključuje upotrebu OrderedDicts i nadjačavanje osnovnog razrješivača s prilagođenim metodama, kao što je prikazano ovdje .
P # 2) Kako pohraniti sliku u YAML?
Odgovor: Možete base64 kodirati sliku i zadržati je u YAML-u, kao što je prikazano dolje.
image: !!binary | iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==
P # 3) Koja je razlika između> i | oznake u YAML-u?
Odgovor: I> i | dopušta pisanje vrijednosti u više redaka u YAML-u. Koristimo znakove veće od> za pisanje višerednih nizova i | predstavljati doslovne vrijednosti. Vrijednosti napisane pomoću | ne treba pobjeći. Na primjer, možemo pohraniti Html pomoću |.
template: | This is a test paragraph
This is another paragraph
P # 4) Koji je značaj ... na kraju YAML datoteke.
Odgovor: Tri razdoblja ... izborni su identifikatori. Njima se može označiti kraj dokumenta u toku.
P # 5) Kako napisati komentare u YAML datoteku?
Odgovor: Koristimo # za pisanje komentara u jednom retku. YAML ne podržava višeredne komentare. Dakle, trebamo koristiti # u više redaka, kao što je prikazano u nastavku.
# this is # a single line as well as multi-line # comment
Zaključak
U ovom smo vodiču pokrili korake pripreme razvojnog okruženja u Windowsima i Linuxu za početak rada s YAML-om. Gotovo smo razgovarali o svim konceptima YAML-ovih osnovnih tipova podataka, YAML editoru i YAML Parseru.
Također smo istakli blagodati upotrebe YAML-a u odnosu na druge označne jezike i pružili primjere koda uz pomoć pratećeg uzorka projekta. Nadamo se da sada polaznici mogu koristiti YAML za apstrahiranje podataka iz aplikacijske logike za pisanje efikasnog i održivog koda.
Sretno učenje !!
Preporučena literatura
- Vodič za Python za početnike (Praktični BESPLATNI trening za Python)
- Postupak uvođenja i instalacije Pythona
- Vodič za Python Django - Početak rada s Djangom
- Python DateTime Vodič s primjerima
- Vodič za rukovanje datotekama u Pythonu: Kako stvoriti, otvoriti, čitati, pisati
- Vodič za testiranje: Potpuni vodič za alate za testiranje GUI-a za početnike
- Izjave o kontroli Pythona (Python Continue, Break and Pass)
- Python OOPs koncepti (klase Python, objekti i nasljeđivanje)