yaml tutorial comprehensive guide yaml using python
Deze YAML-zelfstudie legt uit wat YAML is, basisconcepten van YAML, zoals gegevenstypen, YAML-validator, parser, editor, bestanden, enz. Met behulp van codevoorbeelden met behulp van Python:
Tekstverwerking in de informatica helpt programmeurs om configureerbare programma's en applicaties te maken. Opmaaktalen spelen een cruciale rol bij het opslaan en uitwisselen van gegevens in een voor mensen leesbaar formaat.
Bovendien gebruiken programmeurs opmaaktalen als gewone, en standaardformaten voor gegevensuitwisseling tussen verschillende systemen. Sommige voorbeelden van de opmaaktalen zijn HTML, XML, XHTML en JSON.
We hebben informatie over nog een opmaaktaal gedeeld in deze eenvoudig te volgen YAML-zelfstudie.
Deze tutorial helpt de lezers bij het vinden van antwoorden op de onderstaande vragen. Leerlingen kunnen de eerste stappen zetten en het mysterie van opmaaktalen in het algemeen en YAML in het bijzonder begrijpen.
De vragen zijn onder meer:
- Waarom hebben we opmaaktalen nodig?
- Waar staat YAML voor?
- Waarom is YAML gemaakt?
- Waarom moeten we YAML leren?
- Waarom is het vandaag belangrijk om YAML te leren?
- Welk type gegevens kan ik opslaan in een YAML?
Deze handleiding is ook nuttig voor ervaren lezers omdat we concepten bespreken in de context van programmeren in het algemeen, en ook in de context van softwaretests. We behandelen hier ook onderwerpen als serialisering en deserialisering.
Wat je leert:
Wat is YAML
De makers van YAML noemden het aanvankelijk 'Yet Another Markup Language'. Na verloop van tijd veranderde het acroniem echter in 'YAML is geen MarkUp-taal'. YAML is een acroniem dat naar zichzelf verwijst en een recursief acroniem wordt genoemd.
We kunnen deze taal gebruiken om gegevens en configuratie op te slaan in een voor mensen leesbaar formaat. YAML is een elementaire taal om te leren. De constructies zijn ook gemakkelijk te begrijpen.
Clark, Ingy en Oren hebben YAML gemaakt om de complexiteit van het begrijpen van andere opmaaktalen aan te pakken, die moeilijk te begrijpen zijn, en de leercurve is ook steiler dan het leren van YAML.
Om het leren zoals altijd comfortabeler te maken, maken we gebruik van een voorbeeldproject. We hosten dit project op Github met een MIT-licentie zodat iedereen wijzigingen kan aanbrengen en indien nodig een pull-aanvraag kan indienen.
U kunt het project klonen met de onderstaande opdracht.
Indien nodig kunt u dit echter doen download de zip bestand voor de code en de voorbeelden.
Als alternatief kunnen lezers dit project klonen met behulp van IntelliJ IDEA. Voltooi de sectie over de vereisten om Python te installeren en configureer het met IntelliJ IDEA voordat u het project gaat klonen.
Waarom hebben we opmaaktalen nodig?
Het is onmogelijk om alles in softwarecode te schrijven. Het is omdat we van tijd tot tijd code moeten onderhouden, en we de details moeten abstraheren naar externe bestanden of databases.
Het is een best practice om de code tot een minimum te beperken en deze zo te maken dat deze niet hoeft te worden aangepast voor de verschillende benodigde gegevensinvoer.
Bijvoorbeeld, we kunnen een functie schrijven om invoergegevens uit een extern bestand te halen en de inhoud regel voor regel af te drukken in plaats van de code en gegevens samen in een enkel bestand te schrijven.
Het wordt als een best practice beschouwd omdat het de zorgen van het creëren van de gegevens en het maken van de code scheidt. De programmeerbenadering van het abstraheren van de gegevens uit code zorgt voor eenvoudig onderhoud.
Opmaaktalen maken het voor ons gemakkelijker om hiërarchische informatie op te slaan in een toegankelijker en lichter formaat. Deze bestanden kunnen via internet tussen programma's worden uitgewisseld zonder veel bandbreedte te verbruiken en ondersteunen de meest voorkomende protocollen.
Deze talen volgen een universele standaard en ondersteunen verschillende coderingen om tekens uit bijna alle gesproken talen ter wereld te ondersteunen.
Het beste van opmaaktalen is dat hun algemene gebruik niet wordt geassocieerd met een systeemopdracht, en deze eigenschap maakt ze veiliger en is de reden voor hun wijdverspreide en wereldwijde acceptatie. Daarom vindt u mogelijk geen YAML-opdrachten die we rechtstreeks kunnen uitvoeren om uitvoer te maken.
Voordelen van het gebruik van een YAML-bestand
YAML heeft veel voordelen. De onderstaande tabel toont een vergelijking tussen YAML en JSON. JSON staat voor JavaScript Object Notation en we gebruiken het als een gegevensuitwisselingsformaat.
Attribuut | YAML | JSON |
---|---|---|
Breedsprakigheid | Minder uitgebreid | Meer uitgebreid |
Gegevenstypen | Ondersteunt complexe gegevenstypen. | Ondersteunt geen complexe gegevenstypen. |
Opmerkingen | Ondersteunt het schrijven van opmerkingen met '#'. | Biedt geen ondersteuning voor het schrijven van opmerkingen. |
Leesbaarheid | Beter leesbaar voor mensen. | Minder leesbaar voor mensen. |
Zelfverwijzingen | Ondersteunt verwijzingselementen in dezelfde documenten met behulp van '&' en *. | Biedt geen ondersteuning voor zelfverwijzing. |
Meerdere documenten | Ondersteunt meerdere documenten in één bestand. | Ondersteunt één document in één bestand. |
Vanwege de voordelen van YAML ten opzichte van de andere bestandsindelingen, zoals JSON, komt YAML vaker voor bij ontwikkelaars vanwege de veelzijdigheid en flexibiliteit.
Vereisten
We installeren eerst Python en configureren vervolgens Python en zijn pakketten met IntelliJ IDEA. Installeer daarom IntelliJ IDEA als dit nog niet is gebeurd voordat u verder gaat.
Installeer Python
Volg deze stappen om Python op Windows 10 te installeren en in te stellen.
Stap 1
Python downloaden en installeer het door de setup te selecteren zoals weergegeven in de onderstaande afbeelding.
Stap 2
Start de installatie en selecteer de installatie aanpassen. Schakel het selectievakje van in Python toevoegen aan PATH
Stap 3
Pas de locatie van Python aan zoals weergegeven in de afbeelding.
Stap 4
Ga verder met de installatie. Aan het einde van de installatiewizard Schakel de padlimiet in Windows uit door op de optie in de wizard te klikken.
Nu is de installatie van Python voltooid.
Configureer Python met IntelliJ IDEA
Laten we nu IntelliJ IDEA configureren met Python. De eerste stap is het installeren van de plug-ins om aan Python-projecten te kunnen werken.
Installeer Python-plug-ins
Installeer Python Community Edition
Installeer Python Security
Volg de onderstaande stappen om de configuratie te voltooien.
Stap 1
Gebruik het menu Bestand en ga naar Platforminstellingen. Klik op de SDK-knop toevoegen
Stap 2
Selecteer de Virtuele omgeving optie en selecteer de basisinterpreter van Python als degene die in de vorige stap is geïnstalleerd.
Stap 3
Selecteer nu de virtuele omgeving die in de vorige stap is gemaakt onder het Project SDK-instellingen
We raden één virtuele omgeving aan voor één project.
Stap 4 [Optioneel]
Open het config.py-bestand vanuit de projectverkenner en klik op installeer vereisten , zoals weergegeven in de onderstaande afbeelding.
Negeer de ipython-vereiste indien nodig door een optie uit te schakelen in het dialoogvenster Pakket kiezen.
Nu kunt u naar de volgende sectie gaan om de basisprincipes van YAML te leren.
Basisprincipes van YAML
In deze sectie noemen we de basisprincipes van YAML met behulp van een voorbeeldbestand genaamd config.yml en config.py. Wij zijn er vast van overtuigd dat het leren beter wordt door de concepten van YAML parallel met het gebruik ervan in een programmeertaal uit te leggen.
Daarom, terwijl we de basisprincipes in YAML uitleggen, betrekken we ook het gebruik van Python om de gegevens die zijn opgeslagen in YAML te lezen en te schrijven.
Laten we nu de config.yml maken of openen in onze respectievelijke editors en de YAML begrijpen.
Merk op dat YAML-bestanden.lyuitbreiding. De taal is hoofdlettergevoelig. We gebruiken spaties en geen tabs voor inspringen.
Laten we naast deze basisprincipes eens kijken naar de gegevenstypen. In de genoemde YAML hebben we de informatie op een quiz weergegeven. Een quiz wordt afgebeeld als een knooppunt op hoofdniveau, met attributen zoals een beschrijving, vragen en antwoorden.
YAML-gegevenstypen
YAML kan scalairen, reeksen en toewijzingen opslaan. We hebben laten zien hoe alle benodigde gegevenstypen in het bestand config.yml moeten worden geschreven.
Scalairen zijn tekenreeksen, gehele getallen, drijvers en booleans. Gegevens van het type Strings staan tussen dubbele aanhalingstekens “. YAML legt echter geen tekenreeksen op tussen dubbele aanhalingstekens, en we kunnen gebruik maken van> of | voor het schrijven van lange strings in meerdere regels.
Bekijk de verschillende gegevenstypen en toegewezen waarden in de onderstaande tabel.
Data type | Voorbeelden van gegevenstypen in Config.yml |
---|---|
Draad Strings kunnen met of zonder aanhalingstekens worden opgeslagen. | quiz: beschrijving:> Deze quiz is om YAML te leren vragen: - 'Wie is er meer op internet te vinden?' antwoorden: - katten |
Geheel getal en zwevend Gehele getallen en vlotters worden vermeld in hun oorspronkelijke vorm | quiz: vragen: - 'Wat is de waarde van pi?' - 'Hoeveel leden kunnen maximaal TT spelen?' antwoorden: - 3.141592653589793 - 4 |
Boolean Booleans worden opgeslagen met de tekenreeks true / false of ja / nee | quiz: vragen: - 'Is pluto gerelateerd aan platonische relaties?' - 'Weet je niet dat het heelal zich steeds verder uitbreidt?' antwoorden: - waar - Niet doen |
Opeenvolgingen Reeksen worden gemaakt met behulp van vierkante haken [. | quiz: antwoorden: - [8, 'pluto'] |
Referenties Zelfreferentie wordt gebruikt met behulp van & en * | # expliciete dataconversie en hergebruik van datablokken extra: refer: & id011 # geven een verwijzing naar gegevens # Andere waarden nogmaals: * id011 # bel data door de referentie op te geven |
Hieronder staan enkele van de vermeldenswaardige aanvullende elementen van een YAML-bestand.
Document
Let nu op de drie streepjes -. Het betekent het begin van een document. We slaan het eerste document op met een quiz als het hoofdelement en beschrijving, vragen en antwoorden als onderliggende elementen met hun bijbehorende waarden.
Expliciete gegevenstypen
Bekijk de sectiesleutel genaamd extra in de config.yml. We zien dat we met behulp van dubbele uitroeptekens expliciet de datatypes kunnen vermelden van de waarden die in het bestand zijn opgeslagen. We converteren een geheel getal naar een float met !! float. We gebruiken !! str om een geheel getal naar een string te converteren, en gebruiken !! int om een string naar een geheel getal te converteren.
Het YAML-pakket van Python helpt ons bij het lezen van het YAML-bestand en het intern opslaan als woordenboek. Python slaat woordenboeksleutels op als strings en converteert automatisch waarden naar Python-gegevenstypen, tenzij expliciet aangegeven met '!!'.
Lees YAML-bestand in Python
Over het algemeen maken we gebruik van de YAML Editor en een YAML Validator op het moment dat we YAML schrijven. YAML Validator controleert het bestand op het moment van schrijven.
Het Python YAML-pakket heeft een ingebouwde YAML-parser, die het bestand parseert voordat het in het geheugen wordt opgeslagen.
Laten we nu config.py maken en openen in onze respectievelijke editors met de onderstaande inhoud.
Voer config.py uit om te testen of u de hierboven genoemde stappen heeft voltooid.
Open het config.py-bestand in IntelliJ IDEA, zoek het hoofdblok en voer het bestand uit met behulp van het afspeelpictogram.
Zodra we het bestand hebben uitgevoerd, zien we de console met de uitvoer.
In de read_yaml-functie openen we het config.yml-bestand en gebruiken we de safe_load-methode van het YAML-pakket om de stream als een Python-woordenboek te lezen en retourneren we dit woordenboek met het return-sleutelwoord.
my_config-variabele slaat de inhoud van het config.yml-bestand op als een woordenboek. Met behulp van Pythons mooie afdrukpakket genaamd pprint, drukken we het woordenboek af naar de console.
Let op de bovenstaande output. Alle YAML-tags komen overeen met de gegevenstypen van Python, zodat het programma die waarden verder kan gebruiken. Dit proces van het construeren van Python-objecten uit de tekstinvoer wordt deserialisering genoemd.
Schrijf YAML-bestand in Python
Open config.py en voeg de volgende regels code toe net onder de read_yaml-methode en boven het hoofdblok van het bestand.
In de write_yaml-methode openen we een bestand met de naam toyaml.yml in de schrijfmodus en gebruiken we de dump-methode van de YAML-pakketten om het YAML-document naar het bestand te schrijven.
Voeg nu de onderstaande regels code toe aan het einde van het bestand config.py
Sla het bestand config.py op en voer het bestand uit met de onderstaande opdracht of met het afspeelpictogram in de IDE.
We zien dat de bovenstaande opdracht de inhoud van config.yml afdrukt naar de console of de uitvoer van het systeem. Python-programma schrijft dezelfde inhoud naar een ander bestand met de naam toyaml.yml. Het proces van het schrijven van het Python-object naar een extern bestand wordt Serialisatie genoemd.
Meerdere documenten in YAML
YAML is vrij veelzijdig en we kunnen meerdere documenten in één YAML-bestand opslaan.
Maak een kopie van het bestand config.yml als configs.yml en plak de onderstaande regels aan het einde van het bestand.
SQL database interviewvragen en antwoorden
Drie streepjes - in het bovenstaande fragment markeert het begin van een nieuw document in hetzelfde bestand. Gebruik van | na de beschrijving tag stelt ons in staat om een meerregelige tekst van het type string te schrijven. Hier in het nieuwe document hebben we vragen en antwoorden opgeslagen als afzonderlijke toewijzingen die onder vragen zijn genest.
Maak nu een nieuw bestand met de naam configs.py en plak de onderstaande code in het bestand.
Let op de wijzigingen in de functies read_yaml en write_yaml. In read_yaml gebruiken we de safe_load_all methode van het YAML-pakket om alle documenten die aanwezig zijn in configs.yml als een lijst te lezen. Evenzo gebruiken we in write_yaml de methode dump_all om de lijst met alle eerder gelezen documenten naar een nieuw bestand met de naam toyaml.yml te schrijven.
Voer nu configs.py uit.
De uitvoer van het bovenstaande commando wordt hieronder weergegeven.
De uitvoer is vergelijkbaar met de eerder genoemde uitvoer van één document. Python converteert elk document in de configs.yml naar een Python-woordenboek. Het maakt de verdere verwerking en het gebruik van de waarden gemakkelijker.
Veel Gestelde Vragen
U kunt de onderstaande vragen tegenkomen tijdens het werken met YAML.
V # 1) Is het mogelijk om de volgorde van YAML-toewijzingen te behouden?
Antwoord: Ja, het is mogelijk om het standaardgedrag van de laders aan te passen in het pyYAML-pakket van Python. Het omvat het gebruik van OrderedDicts en het overschrijven van de Base-resolver met aangepaste methoden, zoals weergegeven hier
V # 2) Hoe kan ik een afbeelding opslaan in YAML?
Antwoord: U kunt een afbeelding met base64 coderen en deze in YAML bewaren, zoals hieronder wordt weergegeven.
V # 3) Wat is het verschil tussen> en | tags in YAML?
Antwoord: Zowel> als | staat het schrijven van waarden in meerdere regels in YAML toe. We gebruiken groter dan symbool> om strings met meerdere regels te schrijven en | om letterlijke waarden weer te geven. Waarden geschreven met | hoeft niet te worden ontsnapt. Bijvoorbeeld, we kunnen Html opslaan met |.
V # 4) Wat is de betekenis van ... aan het einde van het YAML-bestand.
Antwoord: Drie punten… zijn optionele identificatiegegevens. Deze kunnen worden gebruikt om het einde van het document in een stream te markeren.
V # 5) Hoe schrijf ik commentaar in het YAML-bestand?
Antwoord: We gebruiken # om een enkele regel commentaar te schrijven. YAML ondersteunt geen opmerkingen met meerdere regels. Daarom moeten we # in meerdere regels gebruiken, zoals hieronder wordt weergegeven.
Gevolgtrekking
In deze handleiding hebben we de stappen besproken van het voorbereiden van de ontwikkelomgeving in zowel Windows als Linux om aan de slag te gaan met YAML. We bespraken bijna alle concepten van de basisgegevenstypen van YAML, YAML-editor en YAML-parser.
We hebben ook de voordelen van het gebruik van YAML ten opzichte van andere opmaaktalen benadrukt en codevoorbeelden verstrekt met behulp van een ondersteunend voorbeeldproject. We hopen dat de leerlingen nu YAML kunnen gebruiken om gegevens uit de toepassingslogica te abstraheren om efficiënte en onderhoudbare code te schrijven.
Veel plezier met leren !!
Aanbevolen literatuur
- Python-zelfstudie voor beginners (hands-on GRATIS Python-training)
- Python introductie en installatieproces
- Python Django-zelfstudie - Aan de slag met Django
- Python DateTime-zelfstudie met voorbeelden
- Zelfstudie voor Python-bestandsafhandeling: maken, openen, lezen, schrijven
- TestComplete-zelfstudie: een uitgebreide GUI-testtoolhandleiding voor beginners
- Python-besturingsverklaringen (Python Continue, Break en Pass)
- Python OOPs-concepten (Python-klassen, objecten en overerving)