yaml tutorial comprehensive guide yaml using python
Denne YAML-selvstudie forklarer, hvad der er YAML, grundlæggende begreber for YAML som datatyper, YAML Validator, Parser, Editor, Files osv ved hjælp af kodeeksempler ved hjælp af Python:
Tekstbehandling inden for datalogi hjælper programmører med at oprette konfigurerbare programmer og applikationer. Markup-sprog spiller en vigtig rolle i lagring og udveksling af data i et menneskeligt læsbart format.
Desuden bruger programmører markup-sprog som almindelige og standard dataudvekslingsformater mellem forskellige systemer. Nogle eksempler af markup-sprog inkluderer HTML, XML, XHTML og JSON.
Vi har delt oplysninger om endnu et markup-sprog i denne let at følge YAML-tutorial.
Denne vejledning hjælper læserne med at finde svar på nedenstående spørgsmål. Eleverne kan tage de første skridt og forstå mysteriet ved markup-sprog generelt og YAML i særdeleshed.
Spørgsmålene inkluderer:
- Hvorfor har vi brug for markup-sprog?
- Hvad står YAML for?
- Hvorfor blev YAML oprettet?
- Hvorfor har vi brug for at lære YAML?
- Hvorfor er det vigtigt i dag at lære YAML?
- Hvilken type data kan jeg gemme i en YAML?
Denne guide er nyttig for erfarne læsere, også når vi diskuterer begreber i forbindelse med programmering generelt og også i forbindelse med softwaretest. Vi vil også dække emner som serialisering og deserialisering her.
Hvad du vil lære:
Hvad er YAML
Skabere af YAML kaldte det oprindeligt som 'Yet Another Markup language.' Men med tiden blev akronymet ændret til 'YAML er ikke et MarkUp-sprog.' YAML er et akronym, der refererer til sig selv og kaldes et rekursivt akronym.
Vi kan bruge dette sprog til at gemme data og konfiguration i et menneskeligt læsbart format. YAML er et elementært sprog at lære. Dens konstruktioner er også lette at forstå.
Clark, Ingy og Oren skabte YAML for at tackle kompleksiteten ved at forstå andre markup-sprog, som er vanskelige at forstå, og indlæringskurven er også stejlere end at lære YAML.
For at gøre læring mere behagelig, som altid, bruger vi et prøveprojekt. Vi er vært for dette projekt på Github med MIT-licens, så alle kan foretage ændringer og indsende en pull-anmodning, hvis det kræves.
Du kan klone projektet ved hjælp af kommandoen nedenfor.
git clone git@github.com:h3xh4wk/yamlguide.git
Men hvis det kræves, kan du download zip fil til koden og eksemplerne.
Alternativt kan læsere klone dette projekt ved hjælp af IntelliJ IDEA. Udfyld afsnittet om forudsætninger for at installere Python og konfigurer det med IntelliJ IDEA inden kloning af projektet.

Hvorfor har vi brug for markup-sprog
Det er umuligt at skrive alt i softwarekode. Det er fordi vi har brug for at vedligeholde kode fra tid til anden, og vi er nødt til at abstrakte detaljerne til eksterne filer eller databaser.
Det er en bedste praksis at reducere koden til et så minimum som muligt og oprette den på en måde, så den ikke har brug for ændring af forskellige dataindgange, som den tager.
For eksempel, Vi kan skrive en funktion til at tage inputdata fra en ekstern fil og udskrive dens indhold linje for linje i stedet for at skrive koden og dataene sammen i en enkelt fil.
Det betragtes som en bedste praksis, fordi det adskiller bekymringerne ved at oprette data og oprette koden. Programmeringsmetoden til abstraktion af data fra kode sikrer nem vedligeholdelse.
Markup-sprog gør det lettere for os at gemme hierarkiske oplysninger i et mere tilgængeligt og lettere format. Disse filer kan udveksles mellem programmer over internettet uden at forbruge meget båndbredde og understøtter de mest almindelige protokoller.
Disse sprog følger en universel standard og understøtter forskellige kodninger for at understøtte tegn næsten fra alle talte sprog i verden.
hvordan man får vist bin-filer på Android
Det bedste ved markup-sprog er, at deres generelle brug ikke er forbundet med nogen systemkommando, og denne egenskab gør dem sikrere og er årsagen til deres udbredte og verdensomspændende anvendelse. Derfor finder du muligvis ikke nogen YAML-kommandoer, som vi direkte kan køre for at oprette output.
Fordele ved at bruge en YAML-fil
YAML har mange fordele. Nedenstående tabel viser en sammenligning mellem YAML og JSON. JSON står for JavaScript Object Notation, og vi bruger det som et dataudvekslingsformat.
Attribut | YAML | JSON |
---|---|---|
Nøjagtighed | Mindre detaljeret | Mere detaljeret |
Datatyper | Understøtter komplekse datatyper. | Understøtter ikke komplekse datatyper. |
Kommentarer | Understøtter skrivning af kommentarer ved hjælp af '#'. | Understøtter ikke skrivning af kommentarer. |
Læsbarhed | Mere menneskelig læsbar. | Mindre menneskelig læsbar. |
Selvreferencer | Understøtter henvisningselementer inden for de samme dokumenter ved hjælp af '&,' og *. | Understøtter ikke selvhenvisning. |
Flere dokumenter | Understøtter flere dokumenter i en enkelt fil. | Understøtter enkelt dokument i en enkelt fil. |
På grund af fordelene ved YAML i forhold til de andre filformater som JSON, er YAML mere udbredt blandt udviklere på grund af dens alsidighed og fleksibilitet.
Forudsætninger
Vi installerer først Python og konfigurerer derefter Python og dets pakker med IntelliJ IDEA. Installer derfor IntelliJ IDEA, hvis den ikke allerede er installeret, før du fortsætter.
Installer Python
Følg disse trin for at installere og opsætte Python på Windows 10.
Trin 1
Download Python og installer det ved at vælge opsætningen som vist i nedenstående billede.

Trin 2
Start opsætningen, og vælg tilpas installationen. Marker afkrydsningsfeltet for Tilføjelse af Python til PATH .

Trin # 3
Tilpas placeringen af Python som vist på billedet.

Trin # 4
Gå videre med installationen. I slutningen af installationsguiden Deaktiver stigrænsen på Windows ved at klikke på indstillingen i guiden.

Nu er Python-opsætningen færdig.
Konfigurer Python med IntelliJ IDEA
Lad os nu konfigurere IntelliJ IDEA med Python. Det første trin er at installere Plugins for at kunne arbejde på Python-projekter.
Installer Python-plugins
Installer Python Community Edition

Installer Python Security

Følg nedenstående trin for at fuldføre konfigurationen.
Trin 1
Brug menuen Filer og gå til platformindstillinger. Klik på Tilføj SDK-knap .

Trin 2
Vælg Mulighed for virtuelt miljø og vælg Pythons basetolk som den, der blev installeret i det forrige trin.

Trin # 3
Vælg nu det virtuelle miljø oprettet i det foregående trin under Projekt SDK-indstillinger .

Vi anbefaler et virtuelt miljø til et projekt.
Trin # 4 (Valgfrit)
Åbn filen config.py fra projektudforskeren, og klik på installationskrav , som vist i nedenstående billede.

Ignorer ipython-kravet, hvis det kræves ved at fjerne markeringen af en indstilling i dialogboksen Vælg pakke.

Nu kan du gå over til næste afsnit for at lære det grundlæggende i YAML.
Grundlæggende om YAML
I dette afsnit nævner vi det grundlæggende i YAML ved hjælp af en eksempelfil kaldet config.yml og config.py. Vi er overbevist om, at forklaring af begreberne YAML parallelt med dets anvendelse på et programmeringssprog gør læring bedre.
Derfor, mens vi forklarer det grundlæggende i YAML, involverer vi også brugen af Python til at læse og skrive de data, der er gemt i YAML.
Lad os nu oprette eller åbne config.yml i vores respektive redaktører og forstå 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
Bemærk, at YAML-filer har.lyudvidelse. Sproget er store og små bogstaver. Vi bruger mellemrum og ikke faner til indrykning.
Lad os sammen med disse grundlæggende forstå datatyperne. I den nævnte YAML har vi repræsenteret informationen på en quiz. En quiz er afbildet som en rodnodenode, der har attributter såsom en beskrivelse, spørgsmål og svar.
YAML-datatyper
YAML kan gemme skalarer, sekvenser og tilknytninger. Vi har vist, hvordan man skriver alle nødvendige datatyper i filen config.yml.
Skalarer er strenge, heltal, flyder og booleanske. Data af typen Strings er anbragt i dobbelt anførselstegn “. YAML pålægger dog ikke skrivestrenge i dobbelt anførselstegn, og vi kan gøre brug af> eller | til at skrive lange strenge i flere linjer.
Se på de forskellige datatyper og kortlagte værdier i nedenstående tabel.
Datatype | Eksempler på datatyper i Config.yml |
---|---|
Snor Strenge kan opbevares med eller uden anførselstegn. | quiz: beskrivelse:> Denne quiz er at lære YAML spørgsmål: - 'Hvem findes mere på nettet?' svar: - katte |
Heltal og flyde Heltal og float er nævnt i deres oprindelige form | quiz: spørgsmål: - 'Hvad er værdien af pi?' - 'Hvor mange maksimale medlemmer kan spille TT?' svar: - 3.141592653589793 - 4 |
Boolsk Booleaner gemmes ved hjælp af streng sand / falsk eller ja / nej | quiz: spørgsmål: - 'Er pluto relateret til platoniske forhold?' - 'Ved du ikke, at universet stadig udvides?' svar: - sand - lade være med |
Sekvenser Sekvenser oprettes ved hjælp af firkantede parenteser (. | quiz: svar: - (8, 'pluto') |
Referencer Selvhenvisning bruges ved hjælp af & og * | # eksplicit datakonvertering og genbrug af datablokke ekstra: henvis: & id011 # give en henvisning til data # Andre værdier igen: * id011 # opkaldsdata ved at give referencen |
Nedenfor er nogle af de værd at bemærke yderligere elementer i en YAML-fil.
Dokument
Bemærk nu de tre bindestreger -. Det betyder starten på et dokument. Vi gemmer det første dokument med en quiz som rodelement, og beskrivelse, spørgsmål og svar som underordnede elementer med deres tilknyttede værdier.
Eksplicit datatyper
Overhold sektionsnøglen kaldet ekstra i config.yml. Vi ser, at ved hjælp af dobbelt udråb kan vi eksplicit nævne datatyperne for de værdier, der er gemt i filen. Vi konverterer et heltal til en float ved hjælp af !! float. Vi bruger !! str til at konvertere et heltal til streng, og bruge !! int til at konvertere streng til et helt tal.
Pythons YAML-pakke hjælper os med at læse YAML-filen og gemme den internt som en ordbog. Python gemmer ordbogstaster som strenge, og konverterer automatisk værdier til Python-datatyper, medmindre det udtrykkeligt er angivet ved hjælp af '!!'.
Læs YAML-fil i Python
Generelt bruger vi YAML Editor og en YAML Validator på tidspunktet for skrivning af YAML. YAML Validator kontrollerer filen på tidspunktet for skrivning.
Python YAML-pakken har en indbygget YAML-parser, der analyserer filen, før den gemmes i hukommelsen.
Lad os nu oprette og åbne config.py i vores respektive redaktører med nedenstående indhold.
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)
For at teste, at du har gennemført de skitserede trin, der er nævnt ovenfor, skal du køre config.py.
Åbn filen config.py i IntelliJ IDEA, find hovedblokken og kør filen ved hjælp af afspilningsikonet.

Når vi har kørt filen, ser vi konsollen med output.

I read_yaml-funktion åbner vi config.yml-filen og bruger safe_load-metoden i YAML-pakken til at læse streamen som en Python-ordbog og derefter returnere denne ordbog ved hjælp af retur-nøgleordet.
my_config-variablen gemmer indholdet af filen config.yml som en ordbog. Ved hjælp af Pythons smukke printpakke kaldet pprint udskriver vi ordbogen til konsollen.
Bemærk ovenstående output. Alle YAML-tags svarer til Pythons datatyper, så programmet yderligere kan bruge disse værdier. Denne proces med at konstruere Python-objekter fra tekstinput kaldes Deserialisation.
Skriv YAML-fil i Python
Åbn config.py og tilføj følgende kodelinjer lige under read_yaml-metoden og over filens hovedblok.
def write_yaml(data): ''' A function to write YAML file''' with open('toyaml.yml', 'w') as f: yaml.dump(data, f)
I write_yaml-metoden åbner vi en fil kaldet toyaml.yml i skrivetilstand og bruger YAML-pakkens dump-metode til at skrive YAML-dokumentet til filen.
Tilføj nu nedenstående kodelinjer i slutningen af filen config.py
# write A python object to a file write_yaml(my_config)
Gem config.py og kør filen ved hjælp af kommandoen nedenfor eller ved hjælp af afspilningsikonet i IDE.
python config.py
Vi ser, at ovenstående kommando udskriver indholdet af config.yml til konsollen eller systemets output. Python-programmet skriver det samme indhold til en anden fil, der hedder toyaml.yml. Processen med at skrive Python-objektet til en ekstern fil kaldes Serialization.
Flere dokumenter i YAML
YAML er ret alsidig, og vi kan gemme flere dokumenter i en enkelt YAML-fil.
Opret en kopi af filen config.yml som configs.yml og indsæt nedenstående linjer i slutningen af filen.
--- 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
Tre bindestreger - i ovenstående uddrag markerer starten på et nyt dokument i den samme fil. Brug af | efter beskrivelseskoden giver os mulighed for at skrive en tekst med flere linier af typen streng. Her i det nye dokument har vi gemt spørgsmål og svar som separate kortlægninger indlejret under spørgsmål.
Opret nu en ny fil, der hedder configs.py, og indsæt nedenstående kode i filen.
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)
Bemærk ændringerne i funktionerne read_yaml og write_yaml. I read_yaml bruger vi metoden safe_load_all i YAML-pakken til at læse alle de dokumenter, der findes i configs.yml, som en liste. Tilsvarende i write_yaml bruger vi dump_all-metoden til at skrive listen over alle de tidligere læste dokumenter til en ny fil kaldet toyaml.yml.
Kør nu configs.py.
python configs.py
Outputtet fra ovenstående kommando vises nedenfor.
({'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?'}}}})
Outputtet svarer til det tidligere nævnte output af enkelt dokument. Python konverterer hvert dokument i configs.yml til en Python-ordbog. Det gør det lettere for yderligere behandling og brug af værdierne.
Ofte stillede spørgsmål
Du kan komme på tværs af nedenstående spørgsmål, mens du arbejder med YAML.
Q # 1) Er det muligt at bevare rækkefølgen af YAML-tilknytninger?
Svar: Ja, det er muligt at tilpasse indlæsernes standardadfærd i Pythons pyYAML-pakke. Det involverer brugen af OrderedDicts og tilsidesættelse af Base resolver med brugerdefinerede metoder, som vist her .
Q # 2) Hvordan gemmes et billede i YAML?
Svar: Du kan base64 kode et billede og gemme det i YAML som vist nedenfor.
image: !!binary | iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==
Q # 3) Hvad er forskellen mellem> og | tags i YAML?
Svar: Både> og | tillad at skrive værdier i flere linjer i YAML. Vi bruger mere end symbol> til at skrive streng med flere linjer og | at repræsentere bogstavelige værdier. Værdier skrevet med | behøver ikke undslippe. For eksempel, vi kan gemme HTML ved hjælp af |.
template: | This is a test paragraph
This is another paragraph
Q # 4) Hvad er betydningen af ... i slutningen af YAML-filen.
Svar: Tre perioder ... er valgfri identifikatorer. Disse kan bruges til at markere slutningen af dokumentet i en stream.
Spørgsmål nr. 5) Hvordan skriver man kommentarer i YAML-filen?
Svar: Vi bruger # til at skrive en enkelt linjekommentar. YAML understøtter ikke kommentarer med flere linjer. Derfor skal vi bruge # i flere linjer, som vist nedenfor.
# this is # a single line as well as multi-line # comment
Konklusion
I denne vejledning dækkede vi trinene til at forberede udviklingsmiljøet i både Windows såvel som Linux for at komme i gang med YAML. Vi diskuterede næsten alle begreberne i YAMLs grundlæggende datatyper, YAML-editor og YAML Parser.
Vi har også fremhævet fordelene ved at bruge YAML over for andre markup-sprog og leveret kodeeksempler ved hjælp af et understøttende eksempelprojekt. Vi håber, at eleverne nu kan bruge YAML til at abstrahere data fra applikationslogik til at skrive effektiv og vedligeholdelig kode.
Glad læring !!
Anbefalet læsning
- Python-vejledning til begyndere (GRATIS GRATIS Python-træning)
- Python introduktion og installationsproces
- Python Django-vejledning - Kom godt i gang med Django
- Python DateTime-tutorial med eksempler
- Python filhåndteringsvejledning: Sådan oprettes, åbnes, læses, skrives
- TestComplete Tutorial: En omfattende GUI-testværktøjs guide til begyndere
- Python-kontroludtalelser (Python fortsætter, bryder og passerer)
- Python OOP-koncepter (Python-klasser, objekter og arv)