yaml tutorial comprehensive guide yaml using python
Denne YAML-opplæringen forklarer hva som er YAML, grunnleggende konsepter for YAML, som datatyper, YAML Validator, Parser, Editor, Files, etc ved hjelp av kodeeksempler ved bruk av Python:
Tekstbehandling innen informatikk hjelper programmerere å lage konfigurerbare programmer og applikasjoner. Markup-språk spiller en viktig rolle i lagring og utveksling av data i et lesbart format.
Videre bruker programmerere markeringsspråk som vanlig, og standard datautvekslingsformater mellom forskjellige systemer. Noen eksempler av markup-språk inkluderer HTML, XML, XHTML og JSON.
Vi har delt informasjon om ett mer markup-språk i dette lett å følge YAML-opplæringen.
Denne opplæringen hjelper leserne med å finne svar på de nevnte spørsmålene. Elevene kan ta de første trinnene og forstå mysteriet med markup-språk generelt og YAML spesielt.
Spørsmålene inkluderer:
- Hvorfor trenger vi markeringsspråk?
- Hva står YAML for?
- Hvorfor ble YAML opprettet?
- Hvorfor trenger vi å lære YAML?
- Hvorfor er det viktig i dag å lære YAML?
- Hvilken type data kan jeg lagre i en YAML?
Denne guiden er nyttig for erfarne lesere også når vi diskuterer begreper i sammenheng med programmering generelt, og også i sammenheng med programvaretesting. Vi vil også dekke emner som Serialization og Deserialization her.
Hva du vil lære:
Hva er YAML
Skaperne av YAML kalte det opprinnelig som 'Yet Another Markup language.' Imidlertid endret akronymet seg med tiden til 'YAML er ikke et MarkUp-språk.' YAML er et akronym som refererer til seg selv og kalles et rekursivt akronym.
Vi kan bruke dette språket til å lagre data og konfigurasjon i et lesbart format. YAML er et elementært språk å lære. Dens konstruksjoner er også lette å forstå.
Clark, Ingy og Oren opprettet YAML for å løse kompleksiteten i å forstå andre markeringsspråk, som er vanskelige å forstå, og læringskurven er også brattere enn å lære YAML.
For å gjøre læring mer behagelig, som alltid, bruker vi et prøveprosjekt. Vi er vert for dette prosjektet på Github med MIT-lisens for alle å gjøre endringer og sende inn en pull-forespørsel om nødvendig.
Du kan klone prosjektet ved hjelp av kommandoen nedenfor.
git clone git@github.com:h3xh4wk/yamlguide.git
Imidlertid, hvis nødvendig, kan du last ned glidelåsen fil for koden og eksemplene.
Alternativt kan leserne klone dette prosjektet ved hjelp av IntelliJ IDEA. Fullfør delen om forutsetninger for å installere Python og konfigurer den med IntelliJ IDEA før du kloner prosjektet.

Hvorfor trenger vi markeringsspråk
Det er umulig å skrive alt i programvarekode. Det er fordi vi trenger å opprettholde koden fra tid til annen, og vi trenger å trekke ut detaljene til eksterne filer eller databaser.
Det er en god praksis å redusere koden til så lite som mulig og lage den på en måte som den ikke trenger modifisering for forskjellige datainnganger som den tar.
For eksempel, vi kan skrive en funksjon for å ta inndata fra en ekstern fil og skrive ut innholdet linje for linje i stedet for å skrive koden og dataene sammen i en enkelt fil.
Det regnes som en best praksis fordi det skiller bekymringene ved å lage data og opprette koden. Programmeringsmetoden for å trekke ut data fra koden sikrer enkelt vedlikehold.
Markup-språk gjør det lettere for oss å lagre hierarkisk informasjon i et mer tilgjengelig og lettere format. Disse filene kan byttes mellom programmer over internett uten å bruke mye båndbredde og støtter de vanligste protokollene.
Disse språkene følger en universell standard og støtter forskjellige kodinger for å støtte tegn nesten fra alle talespråk i verden.
forskjell mellom kvalitetskontroll og forsikring
Det beste med markeringsspråk er at deres generelle bruk ikke er forbundet med noen systemkommando, og denne egenskapen gjør dem tryggere og er årsaken til deres utbredte og verdensomspennende adopsjon. Derfor kan det hende at du ikke finner noen YAML-kommandoer som vi kan kjøre direkte for å lage noen utdata.
Fordeler med å bruke en YAML-fil
YAML har mange fordeler. Tabellen nedenfor viser en sammenligning mellom YAML og JSON. JSON står for JavaScript Object Notation, og vi bruker det som et datautvekslingsformat.
Egenskap | YAML | JSON |
---|---|---|
Retterhet | Mindre ordentlig | Mer detaljert |
Datatyper | Støtter komplekse datatyper. | Støtter ikke komplekse datatyper. |
Kommentarer | Støtter å skrive kommentarer med '#'. | Støtter ikke å skrive kommentarer. |
Lesbarhet | Mer lesbar for mennesker. | Mindre lesbar for mennesker. |
Selvreferanser | Støtter referanseelementer i de samme dokumentene ved hjelp av '&,' og *. | Støtter ikke selvhenvisning. |
Flere dokumenter | Støtter flere dokumenter i en enkelt fil. | Støtter enkelt dokument i en enkelt fil. |
På grunn av fordelene med YAML i forhold til andre filformater som JSON, er YAML mer utbredt blant utviklere for sin allsidighet og fleksibilitet.
Forutsetninger
Vi installerer først Python og konfigurerer deretter Python og dets pakker med IntelliJ IDEA. Installer derfor IntelliJ IDEA hvis den ikke allerede er installert før du fortsetter.
Installer Python
Følg disse trinnene for å installere og sette opp Python på Windows 10.
Trinn 1
Last ned Python og installer den ved å velge oppsettet som vist i bildet nedenfor.

Steg 2
Start oppsettet og velg tilpasse installasjonen. Merk av i Legger til Python til PATH .

Trinn 3
Tilpass plasseringen av Python som vist i bildet.

Trinn 4
Gå videre med installasjonen. På slutten av installasjonsveiviseren Deaktiver stigrensen på Windows ved å klikke på alternativet i Veiviseren.

Nå er Python-oppsettet fullført.
Konfigurer Python med IntelliJ IDEA
La oss nå konfigurere IntelliJ IDEA med Python. Det første trinnet er å installere plugins for å kunne jobbe med Python-prosjekter.
Installer Python Plugins
Installer Python Community Edition

Installer Python Security

Følg trinnene nedenfor for å fullføre konfigurasjonen.
Trinn 1
Bruk filmenyen og gå til plattforminnstillinger. Klikk på Legg til SDK-knapp .

Steg 2
Velg Alternativ for virtuelt miljø og velg Pythons basetolker som den som ble installert i forrige trinn.

Trinn 3
Velg det virtuelle miljøet som ble opprettet i forrige trinn under Prosjekt SDK-innstillinger .

Vi anbefaler ett virtuelt miljø for ett prosjekt.
Trinn 4 (Valgfritt)
Åpne filen config.py fra prosjektutforskeren og klikk på installasjonskrav , som vist på bildet nedenfor.

Ignorer ipython-kravet om nødvendig ved å fjerne merket for et alternativ i dialogboksen Velg pakke.

Nå kan du gå videre til neste avsnitt for å lære det grunnleggende om YAML.
Grunnleggende om YAML
I denne delen nevner vi grunnleggende om YAML ved hjelp av en eksempelfil som heter config.yml og config.py. Vi tror bestemt at å forklare begrepene YAML parallelt med bruken i et programmeringsspråk gjør læring bedre.
Derfor, mens vi forklarer det grunnleggende i YAML, involverer vi også bruk av Python for å lese og skrive dataene som er lagret i YAML.
La oss nå opprette eller åpne config.yml i våre 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
Legg merke til at YAML-filer har.lyUtvidelse. Språket er mellom store og små bokstaver. Vi bruker mellomrom og ikke faner for innrykk.
Sammen med disse grunnleggende, la oss forstå datatypene. I den nevnte YAML har vi representert informasjonen på en quiz. En quiz er avbildet som en rotnivåknute, med attributter som beskrivelse, spørsmål og svar.
YAML datatyper
YAML kan lagre skalarer, sekvenser og kartlegginger. Vi har vist hvordan du skriver alle nødvendige datatyper i filen config.yml.
Skalarer er strenger, heltall, flyter og booleans. Data av typen Strenger er omsluttet av dobbelt anførselstegn “. YAML pålegger imidlertid ikke skrivestrenger i dobbelt anførselstegn, og vi kan bruke> eller | for å skrive lange strenger i flere linjer.
Se på de forskjellige datatypene og tilordnede verdiene i tabellen nedenfor.
Data-type | Eksempler på datatyper i Config.yml |
---|---|
String Strenger kan lagres med eller uten anførselstegn. | quiz: beskrivelse:> Denne quizen er å lære YAML spørsmål: - 'Hvem finnes mer på nettet?' svar: - katter |
Heltall og flyte Heltall og flyter er nevnt i sin opprinnelige form | quiz: spørsmål: - 'Hva er verdien av pi?' - 'Hvor mange maksimale medlemmer kan spille TT?' svar: - 3.141592653589793 - 4 |
Boolsk Booleans lagres ved hjelp av streng true / false eller ja / nei | quiz: spørsmål: - 'Er pluto relatert til platoniske forhold?' - 'Vet du ikke at universet utvides stadig?' svar: - sant - ikke |
Sekvenser Sekvenser opprettes ved hjelp av firkantede parenteser (. | quiz: svar: - (8, 'pluto') |
Referanser Selvhenvisning brukes ved hjelp av & og * | # eksplisitt datakonvertering og gjenbruk av datablokker ekstra: refer: & id011 # gi en referanse til data # Andre verdier igjen: * id011 # anropsdata ved å gi referansen |
Nedenfor er noen av de verdt å merke seg flere elementer i en YAML-fil.
Dokument
Legg merke til de tre bindestrekene -. Det betyr starten på et dokument. Vi lagrer det første dokumentet med en quiz som rotelement, og beskrivelse, spørsmål og svar som underordnede elementer med tilhørende verdier.
Eksplisitte datatyper
Følg seksjonsnøkkelen kalt ekstra i config.yml. Vi ser at ved hjelp av doble utrop kan vi eksplisitt nevne datatypene til verdiene som er lagret i filen. Vi konverterer et heltall til en float ved hjelp av !! float. Vi bruker !! str for å konvertere et helt tall til streng, og bruke !! int for å konvertere streng til et helt tall.
Pythons YAML-pakke hjelper oss med å lese YAML-filen og lagre den internt som en ordbok. Python lagrer ordboknøkler som strenger, og konverterer automatisk verdier til Python-datatyper med mindre det er uttrykkelig angitt med “!!”.
Les YAML-filen i Python
Generelt bruker vi YAML Editor og en YAML Validator i skrivende stund YAML. YAML Validator sjekker filen i skrivende stund.
Python YAML-pakken har en innebygd YAML Parser som analyserer filen før den lagres i minnet.
La oss nå opprette og åpne config.py i våre respektive redaktører med innholdet nedenfor.
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 å teste at du har fullført de skisserte trinnene som er nevnt ovenfor, kjør config.py.
Åpne config.py-filen i IntelliJ IDEA, finn hovedblokken og kjør filen ved hjelp av avspillingsikonet.

Når vi har kjørt filen, ser vi konsollen med utdata.

I read_yaml-funksjonen åpner vi config.yml-filen og bruker safe_load-metoden til YAML-pakken for å lese strømmen som en Python-ordbok og deretter returnere denne ordboken ved hjelp av retur-nøkkelordet.
my_config-variabelen lagrer innholdet i config.yml-filen som en ordbok. Ved å bruke Pythons pene utskriftspakke kalt pprint, skriver vi ordboken til konsollen.
Legg merke til utdataene ovenfor. Alle YAML-kodene tilsvarer Pythons datatyper, slik at programmet videre kan bruke disse verdiene. Denne prosessen med å konstruere Python-objekter fra tekstinntastingen kalles Deserialisering.
Skriv YAML-fil i Python
Åpne config.py og legg til følgende kodelinjer rett under read_yaml-metoden og over hovedblokken til filen.
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 åpner vi en fil som heter toyaml.yml i skrivemodus og bruker YAML-pakkens dump-metode for å skrive YAML-dokumentet til filen.
Legg nå til kodelinjene nedenfor på slutten av filen config.py
# write A python object to a file write_yaml(my_config)
Lagre config.py og kjør filen ved hjelp av kommandoen nedenfor eller ved hjelp av avspillingsikonet i IDE.
python config.py
Vi ser at kommandoen ovenfor skriver ut innholdet i config.yml til konsollen eller systemets utdata. Python-programmet skriver det samme innholdet til en annen fil som heter toyaml.yml. Prosessen med å skrive Python-objektet til en ekstern fil kalles Serialization.
Flere dokumenter i YAML
YAML er ganske allsidig, og vi kan lagre flere dokumenter i en enkelt YAML-fil.
Lag en kopi av filen config.yml som configs.yml og lim inn linjene nedenfor på slutten av 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 streker - i utdraget ovenfor markerer begynnelsen på et nytt dokument i samme fil. Bruk av | etter beskrivelseskoden gjør det mulig for oss å skrive en flerlinjetekst av typen streng. Her i det nye dokumentet har vi lagret spørsmål og svar som separate kartlegginger nestet under spørsmål.
Opprett nå en ny fil som heter configs.py og lim inn den nevnte koden 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)
Legg merke til endringene i funksjonene read_yaml og write_yaml. I read_yaml bruker vi safe_load_all-metoden til YAML-pakken for å lese alle dokumentene som er tilstede i configs.yml som en liste. På samme måte, i write_yaml, bruker vi dump_all-metoden til å skrive listen over alle tidligere leste dokumenter til en ny fil kalt toyaml.yml.
Kjør nå configs.py.
python configs.py
Utdataene fra kommandoen ovenfor 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?'}}}})
Utdataene ligner på den tidligere nevnte enkeltdokumentutgangen. Python konverterer hvert dokument i configs.yml til en Python-ordbok. Det gjør det lettere for videre bearbeiding og bruk av verdiene.
ofte stilte spørsmål
Du kan komme over spørsmålene nedenfor mens du jobber med YAML.
Spørsmål nr. 1) Er det mulig å bevare ordren på YAML-kartlegginger?
Svar: Ja, det er mulig å tilpasse standardoppførselen til lasterne i Pythons pyYAML-pakke. Det innebærer bruk av OrderedDicts og overstyring av Base resolver med tilpassede metoder, som vist her .
Q # 2) Hvordan lagrer du et bilde i YAML?
Svar: Du kan base64 kode et bilde og holde det i YAML, som vist nedenfor.
image: !!binary | iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==
Q # 3) Hva er forskjellen mellom> og | tagger i YAML?
Svar: Både> og | tillat å skrive verdier i flere linjer i YAML. Vi bruker mer enn symbol> til å skrive flerlinjestrenger og | å representere bokstavelige verdier. Verdier skrevet med | trenger ikke rømmes. For eksempel, vi kan lagre HTML ved å bruke |.
template: | This is a test paragraph
This is another paragraph
Q # 4) Hva er betydningen av ... på slutten av YAML-filen.
Svar: Tre perioder ... er valgfrie identifikatorer. Disse kan brukes til å markere slutten av dokumentet i en strøm.
Sp # 5) Hvordan skriver jeg kommentarer i YAML-filen?
Svar: Vi bruker # til å skrive en enkeltlinjekommentar. YAML støtter ikke kommentarer med flere linjer. Derfor må vi bruke # i flere linjer, som vist nedenfor.
# this is # a single line as well as multi-line # comment
Konklusjon
I denne guiden dekket vi trinnene for å forberede utviklingsmiljøet i både Windows og Linux for å komme i gang med YAML. Vi diskuterte nesten alle konseptene til YAMLs grunnleggende datatyper, YAML-editor og YAML Parser.
Vi har også fremhevet fordelene ved å bruke YAML overfor andre markeringsspråk og gitt kodeeksempler ved hjelp av et støtteeksempelprosjekt. Vi håper at elevene nå kan bruke YAML til å trekke data fra applikasjonslogikk for å skrive effektiv og vedlikeholdbar kode.
Happy Learning !!
Anbefalt lesing
- Python-opplæring for nybegynnere (praktisk GRATIS Python-trening)
- Python Introduksjon og installasjonsprosess
- Python Django-veiledning - Komme i gang med Django
- Python DateTime Tutorial med eksempler
- Python File Handling Tutorial: Hvordan lage, åpne, lese, skrive
- TestComplete Tutorial: En omfattende GUI-testverktøyveiledning for nybegynnere
- Uttalelser om Python-kontroll (Python fortsetter, bryter og passerer)
- Python OOPs-konsepter (Python-klasser, gjenstander og arv)