yaml tutorial comprehensive guide yaml using python
Denna YAML-handledning förklarar vad som är YAML, grundläggande begrepp för YAML som datatyper, YAML Validator, Parser, Editor, Files, etc med hjälp av kodexempel med Python:
Textbehandling inom datavetenskap hjälper programmerare att skapa konfigurerbara program och applikationer. Markup-språk spelar en viktig roll för att lagra och utbyta data i ett läsbart format.
Dessutom använder programmerare markeringsspråk som vanligt och standardformat för datautbyte mellan olika system. Vissa exempel av markeringsspråk inkluderar HTML, XML, XHTML och JSON.
Vi har delat information om ytterligare ett markeringsspråk i denna lättanvända YAML-handledning.
Denna handledning hjälper läsarna att hitta svar på nedanstående frågor. Eleverna kan ta de första stegen och förstå mysteriet med markeringsspråk i allmänhet och YAML i synnerhet.
Frågorna inkluderar:
- Varför behöver vi markeringsspråk?
- Vad står YAML för?
- Varför skapades YAML?
- Varför behöver vi lära oss YAML?
- Varför är det viktigt idag att lära sig YAML?
- Vilken typ av data kan jag lagra i en YAML?
Den här guiden är användbar för erfarna läsare också när vi diskuterar begrepp i samband med programmering i allmänhet, och även i samband med programvarutestning. Vi kommer också att ta upp ämnen som serialisering och deserialisering här.
Vad du kommer att lära dig:
Vad är YAML
Skapare av YAML utsåg det ursprungligen som 'Yet Another Markup language.' Men med tiden ändrades akronymen till 'YAML är inte ett MarkUp-språk.' YAML är en akronym som refererar till sig själv och kallas en rekursiv akronym.
Vi kan använda detta språk för att lagra data och konfiguration i ett läsbart format. YAML är ett elementärt språk att lära sig. Dess konstruktioner är också lätta att förstå.
Clark, Ingy och Oren skapade YAML för att ta itu med komplexiteten i att förstå andra markeringsspråk, som är svåra att förstå, och inlärningskurvan är också brantare än att lära sig YAML.
För att göra lärandet bekvämare, som alltid, använder vi ett provprojekt. Vi är värd för detta projekt på Github med MIT-licens för alla att göra ändringar och skicka en pull-begäran om det behövs.
Du kan klona projektet med kommandot nedan.
git clone git@github.com:h3xh4wk/yamlguide.git
Men om det behövs kan du ladda ner zip fil för koden och exemplen.
Alternativt kan läsare klona detta projekt med hjälp av IntelliJ IDEA. Fyll i avsnittet om förutsättningar för att installera Python och konfigurera det med IntelliJ IDEA innan du klonar projektet.

Varför behöver vi markeringsspråk
Det är omöjligt att skriva allt i programvarukod. Det beror på att vi måste upprätthålla koden då och då, och vi behöver abstrakta detaljerna för externa filer eller databaser.
Det är en bästa praxis att reducera koden till så minimum som möjligt och skapa den på ett sätt som inte behöver modifieras för olika dataingångar som den tar.
Till exempel, vi kan skriva en funktion för att ta inmatningsdata från en extern fil och skriva ut dess innehåll rad för rad snarare än att skriva koden och data tillsammans i en enda fil.
Det anses vara en bästa praxis eftersom det skiljer oroerna för att skapa data och skapa koden. Programmeringsmetoden för att abstrahera data från koden säkerställer enkelt underhåll.
Markeringsspråk gör det lättare för oss att lagra hierarkisk information i ett mer tillgängligt och lättare format. Dessa filer kan utbytas mellan program över internet utan att förbruka mycket bandbredd och stödja de vanligaste protokollen.
Dessa språk följer en universell standard och stöder olika kodningar för att stödja tecken nästan från alla talade språk i världen.
huvudfokus för acceptansprovning är
Det bästa med markeringsspråk är att deras allmänna användning inte är förknippad med något systemkommando, och denna egenskap gör dem säkrare och är anledningen till deras omfattande och globala användning. Därför kanske du inte hittar några YAML-kommandon som vi kan köra direkt för att skapa någon utdata.
Fördelar med att använda en YAML-fil
YAML har många fördelar. Nedanstående tabell visar en jämförelse mellan YAML och JSON. JSON står för JavaScript Object Notation, och vi använder det som ett datautbytesformat.
Attribut | YAML | JSON |
---|---|---|
Ordrikedom | Mindre ordentligt | Mer detaljerad |
Datatyper | Stöder komplexa datatyper. | Stöder inte komplexa datatyper. |
Kommentarer | Stöder att skriva kommentarer med '#'. | Stöder inte att skriva kommentarer. |
Läsbarhet | Mer människoläsbar. | Mindre läsbar för människor. |
Självreferenser | Stöder referenselement i samma dokument med '&' och *. | Stöder inte självreferenser. |
Flera dokument | Stöder flera dokument i en enda fil. | Stöder enstaka dokument i en enda fil. |
På grund av fördelarna med YAML jämfört med andra filformat som JSON, är YAML vanligare bland utvecklare för sin mångsidighet och flexibilitet.
Förutsättningar
Vi installerar först Python och konfigurerar sedan Python och dess paket med IntelliJ IDEA. Installera därför IntelliJ IDEA om den inte redan har installerats innan du fortsätter.
Installera Python
Följ dessa steg för att installera och konfigurera Python på Windows 10.
Steg 1
Ladda ner Python och installera den genom att välja installationen som visas i bilden nedan.

Steg 2
Starta installationen och välj anpassa installationen. Markera kryssrutan för Lägga till Python till PATH .

Steg 3
Anpassa platsen för Python som visas i bilden.

Steg 4
Gå vidare med installationen. I slutet av installationsguiden Inaktivera sökvägsgränsen i Windows genom att klicka på alternativet i guiden.

Nu är Python-installationen klar.
Konfigurera Python med IntelliJ IDEA
Låt oss nu konfigurera IntelliJ IDEA med Python. Det första steget är att installera plugins för att kunna arbeta på Python-projekt.
Installera Python Plugins
Installera Python Community Edition

Installera Python Security

Följ stegen nedan för att slutföra konfigurationen.
Steg 1
Använd filmenyn och gå till plattformsinställningar. Klicka på Lägg till SDK-knapp .

Steg 2
Välj Alternativ för virtuell miljö och välj Pythons bastolk som den som installerades i föregående steg.

Steg 3
Välj nu den virtuella miljön som skapades i föregående steg under Project SDK-inställningar .

Vi rekommenderar en virtuell miljö för ett projekt.
Steg 4 (Valfritt)
Öppna filen config.py från projektutforskaren och klicka på installationskrav , som visas i bilden nedan.

Ignorera ipython-kravet om det behövs genom att avmarkera ett alternativ i dialogrutan Välj paket.

Nu kan du gå vidare till nästa avsnitt för att lära dig grunderna i YAML.
Grunderna i YAML
I det här avsnittet nämner vi grunderna för YAML med hjälp av en exempelfil som heter config.yml och config.py. Vi är övertygade om att förklara begreppen YAML parallellt med dess användning på ett programmeringsspråk gör lärandet bättre.
Därför, medan vi förklarar grunderna i YAML, involverar vi också användningen av Python för att läsa och skriva de data som är lagrade i YAML.
Låt oss nu skapa eller öppna config.yml i våra respektive redaktörer och förstå 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
Lägg märke till att YAML-filer har.lyförlängning. Språket är skiftlägeskänsligt. Vi använder mellanslag och inte flikar för indragning.
Tillsammans med dessa grunder, låt oss förstå datatyperna. I nämnda YAML har vi representerat informationen på ett frågesport. Ett frågesport avbildas som en rotnivånod med attribut som beskrivning, frågor och svar.
YAML-datatyper
YAML kan lagra skalor, sekvenser och mappningar. Vi har visat hur man skriver alla nödvändiga datatyper i filen config.yml.
Scalars är strängar, heltal, flottor och booléer. Data av typen Strängar är bifogade i dubbla citat “. YAML inför emellertid inte skrivsträngar i dubbla citat, och vi kan använda> eller | för att skriva långa strängar i flera rader.
Titta på de olika datatyperna och mappade värdena i nedanstående tabell.
Data typ | Exempel på datatyper i Config.yml |
---|---|
Sträng Strängar kan lagras med eller utan offert. | frågesport: beskrivning:> Denna frågesport är att lära sig YAML frågor: - 'Vem finns mer på nätet?' svar: - katter |
Heltal och flyta Heltals och float nämns i sin ursprungliga form | frågesport: frågor: - 'Vad är värdet på pi?' - 'Hur många maximala medlemmar kan spela TT?' svar: - 3.141592653589793 - 4 |
Boolean Booléer lagras med string true / false eller ja / nej | frågesport: frågor: - 'Är pluto relaterat till platoniska relationer?' - Vet du inte att universum ständigt expanderar? svar: - Sann - låt bli |
Sekvenser Sekvenser skapas med hjälp av hakparenteser (. | frågesport: svar: - (8, 'pluto') |
Referenser Självhänvisning används med hjälp av & och * | # explicit datakonvertering och återanvändning av datablock extra: hänvisa: & id011 # ge en hänvisning till data # Andra värden igen: * id011 # samtalsdata genom att ge referensen |
Nedan listas några av de värda att notera ytterligare element i en YAML-fil.
Dokumentera
Lägg märke till de tre streck -. Det betyder början på ett dokument. Vi lagrar det första dokumentet med ett frågesport som rotelement, och beskrivning, frågor och svar som underordnade element med tillhörande värden.
Explicita datatyper
Observera sektionsnyckeln som kallas extra i config.yml. Vi ser att med hjälp av dubbla utrop kan vi uttryckligen nämna datatyperna för de värden som är lagrade i filen. Vi konverterar ett heltal till ett float med !! float. Vi använder !! str för att konvertera ett heltal till sträng, och använda !! int för att konvertera sträng till ett heltal.
Pythons YAML-paket hjälper oss att läsa YAML-filen och lagra den internt som en ordlista. Python lagrar ordbokstangenter som strängar och konverterar automatiskt värden till Python-datatyper om de inte uttryckligen anges med ”!!”.
Läs YAML-filen i Python
I allmänhet använder vi YAML Editor och en YAML Validator när YAML skrivs. YAML Validator kontrollerar filen i skrivande stund.
Python YAML-paketet har en inbyggd YAML Parser som analyserar filen innan den lagras i minnet.
Låt oss nu skapa och öppna config.py i våra respektive redaktörer med innehållet nedan.
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)
För att testa att du har slutfört de beskrivna stegen ovan, kör config.py.
Öppna config.py-filen i IntelliJ IDEA, leta reda på huvudblocket och kör filen med uppspelningsikonen.

När vi har kört filen ser vi konsolen med utdata.

I read_yaml-funktionen öppnar vi config.yml-filen och använder Safe_load-metoden i YAML-paketet för att läsa strömmen som en Python-ordlista och sedan returnera denna ordlista med returnyckelordet.
my_config-variabeln lagrar innehållet i filen config.yml som en ordlista. Med hjälp av Pythons vackra utskriftspaket kallat pprint skriver vi ordboken till konsolen.
Lägg märke till ovanstående utdata. Alla YAML-taggar motsvarar Pythons datatyper så att programmet kan använda dessa värden ytterligare. Denna process för att konstruera Python-objekt från textinmatningen kallas Deserialisation.
Skriv YAML-fil i Python
Öppna config.py och lägg till följande kodrader strax under read_yaml-metoden och ovanför filens huvudblock.
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 öppnar vi en fil som heter toyaml.yml i skrivläge och använder YAML-paketets dumpningsmetod för att skriva YAML-dokumentet till filen.
Lägg nu till nedanstående kodrader i slutet av filen config.py
# write A python object to a file write_yaml(my_config)
Spara config.py och kör filen med kommandot nedan eller med uppspelningsikonen i IDE.
python config.py
Vi ser att kommandot ovan skriver ut innehållet i config.yml till konsolen eller systemets utdata. Python-programmet skriver samma innehåll till en annan fil som heter toyaml.yml. Processen att skriva Python-objektet till en extern fil kallas Serialization.
Flera dokument i YAML
YAML är ganska mångsidig och vi kan lagra flera dokument i en enda YAML-fil.
Skapa en kopia av filen config.yml som configs.yml och klistra in nedanstående rader i slutet 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 streck - i ovanstående utdrag markerar början på ett nytt dokument i samma fil. Användning av | efter beskrivningstaggen kan vi skriva en text med flera rader av typsträng. Här i det nya dokumentet har vi lagrat frågor och svar som separata mappningar kapslade under frågor.
Skapa nu en ny fil som heter configs.py och klistra in koden nedan 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)
Lägg märke till ändringarna i funktionerna read_yaml och write_yaml. I read_yaml använder vi safe_load_all-metoden i YAML-paketet för att läsa alla dokument som finns i configs.yml som en lista. På samma sätt, i write_yaml använder vi metoden dump_all för att skriva listan över alla tidigare lästa dokument till en ny fil som heter toyaml.yml.
Kör nu configs.py.
python configs.py
Utdata från ovanstående kommando visas nedan.
({'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?'}}}})
Utdata liknar den tidigare nämnda utdata för enstaka dokument. Python konverterar alla dokument i configs.yml till en Python-ordbok. Det gör det lättare för vidare bearbetning och användning av värdena.
Vanliga frågor
Du kan stöta på frågorna nedan när du arbetar med YAML.
F # 1) Är det möjligt att bevara ordningen för YAML-kartläggningar?
Svar: Ja, det är möjligt att anpassa laddarens standardbeteende i Pythons pyYAML-paket. Det innebär att du använder OrderedDicts och åsidosätter basupplösaren med anpassade metoder, som visas här .
F # 2) Hur lagrar jag en bild i YAML?
Svar: Du kan base64 koda en bild och behålla den i YAML, som visas nedan.
image: !!binary | iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==
F # 3) Vad är skillnaden mellan> och | taggar i YAML?
Svar: Både> och | tillåt skrivvärden i flera rader i YAML. Vi använder mer än symbol> för att skriva strängar med flera rader och | för att representera bokstavliga värden. Värden skrivna med | behöver inte fly. Till exempel, vi kan lagra HTML med hjälp av |.
template: | This is a test paragraph
This is another paragraph
F # 4) Vad är betydelsen av ... i slutet av YAML-filen.
Svar: Tre perioder ... är valfria identifierare. Dessa kan användas för att markera slutet på dokumentet i en ström.
F # 5) Hur skriver jag kommentarer i YAML-filen?
Svar: Vi använder # för att skriva en enstaka radkommentar. YAML stöder inte kommentarer med flera rader. Således måste vi använda # i flera rader, som visas nedan.
# this is # a single line as well as multi-line # comment
Slutsats
I den här guiden täckte vi stegen för att förbereda utvecklingsmiljön i både Windows och Linux för att komma igång med YAML. Vi diskuterade nästan alla begrepp i YAML: s grundläggande datatyper, YAML-redigerare och YAML Parser.
Vi har också belyst fördelarna med att använda YAML gentemot andra markeringsspråk och tillhandahållit kodexempel med hjälp av ett stödprovprojekt. Vi hoppas att eleverna nu kan använda YAML för att ta bort data från applikationslogik för att skriva effektiv och underhållbar kod.
Happy Learning !!
Rekommenderad läsning
- Python-handledning för nybörjare (praktisk Python-träning)
- Python introduktions- och installationsprocess
- Python Django-handledning - Komma igång med Django
- Python DateTime-handledning med exempel
- Python File Handling Tutorial: Hur man skapar, öppnar, läser, skriver
- TestComplete Tutorial: En omfattande GUI-testverktygsguide för nybörjare
- Python Control Statements (Python Fortsätt, Break och Pass)
- Python OOP-begrepp (Python-klasser, objekt och arv)