yaml tutorial comprehensive guide yaml using python
Dieses YAML-Tutorial erklärt anhand von Codebeispielen mit Python, was YAML ist, grundlegende Konzepte von YAML wie Datentypen, YAML-Validator, Parser, Editor, Dateien usw.:
Die Textverarbeitung in der Informatik hilft Programmierern, konfigurierbare Programme und Anwendungen zu erstellen. Markup-Sprachen spielen eine wichtige Rolle beim Speichern und Austauschen von Daten in einem für Menschen lesbaren Format.
Darüber hinaus verwenden Programmierer Markup-Sprachen als gemeinsame und Standard-Datenaustauschformate zwischen verschiedenen Systemen. Etwas Beispiele Zu den Markup-Sprachen gehören HTML, XML, XHTML und JSON.
In diesem einfach zu befolgenden YAML-Tutorial haben wir Informationen zu einer weiteren Auszeichnungssprache ausgetauscht.
Dieses Tutorial hilft den Lesern, Antworten auf die unten genannten Fragen zu finden. Die Lernenden können die ersten Schritte unternehmen und das Geheimnis der Auszeichnungssprachen im Allgemeinen und der YAML im Besonderen verstehen.
Die Fragen umfassen:
- Warum brauchen wir Auszeichnungssprachen?
- Wofür steht YAML?
- Warum wurde YAML gegründet?
- Warum müssen wir YAML lernen?
- Warum ist es heute wichtig, YAML zu lernen?
- Welche Art von Daten kann ich in einer YAML speichern?
Dieser Leitfaden ist auch für erfahrene Leser nützlich, wenn wir Konzepte im Zusammenhang mit der Programmierung im Allgemeinen und auch im Zusammenhang mit Softwaretests diskutieren. Wir werden hier auch Themen wie Serialisierung und Deserialisierung behandeln.
Was du lernen wirst:
Was ist YAML?
Die Entwickler von YAML nannten es ursprünglich 'Noch eine Markup-Sprache'. Mit der Zeit änderte sich das Akronym jedoch in 'YAML ist keine MarkUp-Sprache'. YAML ist ein Akronym, das sich auf sich selbst bezieht und als rekursives Akronym bezeichnet wird.
Wir können diese Sprache verwenden, um Daten und Konfigurationen in einem für Menschen lesbaren Format zu speichern. YAML ist eine elementare Sprache zum Lernen. Auch die Konstrukte sind leicht zu verstehen.
Clark, Ingy und Oren haben YAML entwickelt, um die Komplexität des Verständnisses anderer schwer verständlicher Markup-Sprachen anzugehen. Die Lernkurve ist auch steiler als das Erlernen von YAML.
Um das Lernen wie immer angenehmer zu gestalten, verwenden wir ein Beispielprojekt. Wir hosten dieses Projekt auf Github mit MIT-Lizenz, damit jeder Änderungen vornehmen und bei Bedarf eine Pull-Anfrage stellen kann.
Sie können das Projekt mit dem folgenden Befehl klonen.
git clone git@github.com:h3xh4wk/yamlguide.git
Bei Bedarf können Sie dies jedoch tun Laden Sie die Zip herunter Datei für den Code und die Beispiele.
Alternativ können Leser dieses Projekt mit Hilfe von IntelliJ IDEA klonen. Bitte füllen Sie den Abschnitt über die Voraussetzungen für die Installation von Python aus und konfigurieren Sie es mit IntelliJ IDEA, bevor Sie das Projekt klonen.

Warum brauchen wir Markup-Sprachen?
Es ist unmöglich, alles in Software-Code zu schreiben. Dies liegt daran, dass wir von Zeit zu Zeit Code pflegen und die Besonderheiten in externe Dateien oder Datenbanken abstrahieren müssen.
Es wird empfohlen, den Code so gering wie möglich zu halten und so zu erstellen, dass für verschiedene Dateneingaben keine Änderungen erforderlich sind.
Beispielsweise, Wir können eine Funktion schreiben, um Eingabedaten aus einer externen Datei zu entnehmen und deren Inhalt zeilenweise zu drucken, anstatt den Code und die Daten zusammen in eine einzige Datei zu schreiben.
Dies wird als bewährte Methode angesehen, da die Probleme beim Erstellen der Daten und beim Erstellen des Codes voneinander getrennt sind. Der Programmieransatz zum Abstrahieren der Daten vom Code gewährleistet eine einfache Wartung.
Markup-Sprachen erleichtern es uns, hierarchische Informationen in einem zugänglicheren und leichteren Format zu speichern. Diese Dateien können zwischen Programmen über das Internet ausgetauscht werden, ohne viel Bandbreite zu verbrauchen, und unterstützen die gängigsten Protokolle.
Diese Sprachen folgen einem universellen Standard und unterstützen verschiedene Codierungen, um Zeichen aus fast allen gesprochenen Sprachen der Welt zu unterstützen.
So finden Sie den Netzwerksicherheitsschlüssel auf meinem Computer
Das Beste an Markup-Sprachen ist, dass ihre allgemeine Verwendung keinem Systembefehl zugeordnet ist. Diese Eigenschaft macht sie sicherer und ist der Grund für ihre weit verbreitete und weltweite Akzeptanz. Daher finden Sie möglicherweise keine YAML-Befehle, die wir direkt ausführen können, um eine Ausgabe zu erstellen.
Vorteile der Verwendung einer YAML-Datei
YAML hat viele Vorteile. Die folgende Tabelle zeigt einen Vergleich zwischen YAML und JSON. JSON steht für JavaScript Object Notation und wird als Datenaustauschformat verwendet.
Attribut | YAML | JSON |
---|---|---|
Ausführlichkeit | Weniger ausführlich | Ausführlicher |
Datentypen | Unterstützt komplexe Datentypen. | Unterstützt keine komplexen Datentypen. |
Bemerkungen | Unterstützt das Schreiben von Kommentaren mit '#'. | Unterstützt das Schreiben von Kommentaren nicht. |
Lesbarkeit | Besser lesbar. | Weniger lesbar. |
Selbstreferenzen | Unterstützt das Referenzieren von Elementen in denselben Dokumenten mit '&' und *. | Unterstützt keine Selbstreferenzierung. |
Mehrere Dokumente | Unterstützt mehrere Dokumente in einer einzigen Datei. | Unterstützt ein einzelnes Dokument in einer einzelnen Datei. |
Aufgrund der Vorteile von YAML gegenüber anderen Dateiformaten wie JSON ist YAML aufgrund seiner Vielseitigkeit und Flexibilität bei Entwicklern weit verbreitet.
Voraussetzungen
Wir installieren zuerst Python und konfigurieren dann Python und seine Pakete mit IntelliJ IDEA. Installieren Sie daher IntelliJ IDEA, falls nicht bereits installiert, bevor Sie fortfahren.
Installieren Sie Python
Befolgen Sie diese Schritte, um Python unter Windows 10 zu installieren und einzurichten.
Schritt 1
Laden Sie Python herunter und installieren Sie es, indem Sie das Setup wie in der folgenden Abbildung gezeigt auswählen.

Schritt 2
Starten Sie das Setup und wählen Sie 'Installation anpassen'. Aktivieren Sie das Kontrollkästchen von Hinzufügen von Python zu PATH .

Schritt 3
Passen Sie den Speicherort von Python wie im Bild angezeigt an.

Schritt 4
Fahren Sie mit der Installation fort. Am Ende des Installationsassistenten Deaktivieren Sie die Pfadbeschränkung unter Windows, indem Sie im Assistenten auf die Option klicken.

Jetzt ist das Python-Setup abgeschlossen.
Konfigurieren Sie Python mit IntelliJ IDEA
Konfigurieren wir jetzt IntelliJ IDEA mit Python. Der erste Schritt besteht darin, die Plugins zu installieren, um an Python-Projekten arbeiten zu können.
Installieren Sie Python Plugins
Installieren Sie Python Community Edition

Installieren Sie Python Security

Führen Sie die folgenden Schritte aus, um die Konfiguration abzuschließen.
Schritt 1
Verwenden Sie das Menü Datei und gehen Sie zu Plattformeinstellungen. Klicke auf das Schaltfläche SDK hinzufügen .

Schritt 2
Wähle aus Option für virtuelle Umgebung und wählen Sie den Basisinterpreter von Python als den, der im vorherigen Schritt installiert wurde.

Schritt 3
Wählen Sie nun die im vorherigen Schritt erstellte virtuelle Umgebung unter aus Projekt-SDK-Einstellungen .

Wir empfehlen eine virtuelle Umgebung für ein Projekt.
Schritt 4 (Optional)
Öffnen Sie die Datei config.py im Projektexplorer und klicken Sie auf Installationsanforderungen , wie im folgenden Bild gezeigt.

Ignorieren Sie gegebenenfalls die Ipython-Anforderung, indem Sie eine Option im Dialogfeld 'Paket auswählen' deaktivieren.

Jetzt können Sie im nächsten Abschnitt die Grundlagen von YAML erlernen.
Grundlagen von YAML
In diesem Abschnitt werden die Grundlagen von YAML anhand einer Beispieldatei mit den Namen config.yml und config.py erwähnt. Wir sind der festen Überzeugung, dass die Erklärung der Konzepte von YAML parallel zur Verwendung in einer Programmiersprache das Lernen verbessert.
Während wir die Grundlagen in YAML erklären, verwenden wir daher auch Python zum Lesen und Schreiben der in YAML gespeicherten Daten.
Jetzt erstellen oder öffnen wir die Datei config.yml in unseren jeweiligen Editoren und verstehen die 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
Beachten Sie, dass YAML-Dateien haben.lyErweiterung. Die Sprache unterscheidet zwischen Groß- und Kleinschreibung. Wir verwenden Leerzeichen und keine Tabulatoren zum Einrücken.
Lassen Sie uns zusammen mit diesen Grundlagen die Datentypen verstehen. In der erwähnten YAML haben wir die Informationen in einem Quiz dargestellt. Ein Quiz wird als Knoten auf Stammebene dargestellt, der Attribute wie eine Beschreibung, Fragen und Antworten enthält.
YAML-Datentypen
YAML kann Skalare, Sequenzen und Zuordnungen speichern. Wir haben gezeigt, wie alle erforderlichen Datentypen in die Datei config.yml geschrieben werden.
Skalare sind Zeichenfolgen, Ganzzahlen, Gleitkommazahlen und Boolesche Werte. Daten vom Typ Strings werden in doppelte Anführungszeichen gesetzt “. YAML schreibt jedoch keine Schreibzeichenfolgen in doppelte Anführungszeichen vor, und wir können> oder | verwenden zum Schreiben langer Zeichenfolgen in mehreren Zeilen.
Sehen Sie sich die verschiedenen Datentypen und zugeordneten Werte in der folgenden Tabelle an.
Datentyp | Beispiele für Datentypen in Config.yml |
---|---|
String Zeichenfolgen können mit oder ohne Anführungszeichen gespeichert werden. | Quiz: Beschreibung:> Dieses Quiz soll YAML lernen Fragen: - 'Wer ist mehr im Web zu finden?' Antworten: - Katzen |
Integer und Float Ganzzahlen und float werden in ihrer ursprünglichen Form erwähnt | Quiz: Fragen: - 'Was ist der Wert von pi?' - 'Wie viele Mitglieder können maximal TT spielen?' Antworten: - 3.141592653589793 - 4 |
Boolescher Wert Boolesche Werte werden mit der Zeichenfolge true / false oder yes / no gespeichert | Quiz: Fragen: - 'Ist Pluto mit platonischen Beziehungen verbunden?' - 'Weißt du nicht, dass sich das Universum ständig ausdehnt?' Antworten: - wahr - unterlassen Sie |
Sequenzen Sequenzen werden mit Hilfe von eckigen Klammern erstellt (. | Quiz: Antworten: - (8, 'pluto') |
Verweise Selbstreferenzierung wird mit Hilfe von & und * verwendet | # explizite Datenkonvertierung und Wiederverwendung von Datenblöcken extra: refer: & id011 # Verweis auf Daten # Andere Werte Nochmals: * id011 # Daten unter Angabe der Referenz aufrufen |
Nachfolgend sind einige der erwähnenswerten zusätzlichen Elemente einer YAML-Datei aufgeführt.
Dokument
Beachten Sie nun die drei Striche -. Es bedeutet den Beginn eines Dokuments. Wir speichern das erste Dokument mit einem Quiz als Stammelement und Beschreibung, Fragen und Antworten als untergeordnete Elemente mit den zugehörigen Werten.
Explizite Datentypen
Beachten Sie den Abschnittsschlüssel extra in der Datei config.yml. Wir sehen, dass wir mit Hilfe von doppelten Ausrufen die Datentypen der in der Datei gespeicherten Werte explizit erwähnen können. Wir konvertieren eine ganze Zahl mit !! float in einen float. Wir verwenden !! str, um eine Ganzzahl in einen String umzuwandeln, und verwenden !! int, um einen String in eine Ganzzahl umzuwandeln.
Das YAML-Paket von Python hilft uns beim Lesen der YAML-Datei und beim internen Speichern als Wörterbuch. Python speichert Wörterbuchschlüssel als Zeichenfolgen und konvertiert Werte automatisch in Python-Datentypen, sofern nicht ausdrücklich mit '!!' angegeben.
Lesen Sie die YAML-Datei in Python
Im Allgemeinen verwenden wir zum Zeitpunkt des Schreibens von YAML den YAML-Editor und einen YAML-Validator. YAML Validator überprüft die Datei zum Zeitpunkt des Schreibens.
Das Python YAML-Paket verfügt über einen integrierten YAML-Parser, der die Datei analysiert, bevor sie im Speicher gespeichert wird.
Jetzt erstellen und öffnen wir config.py in unseren jeweiligen Editoren mit dem folgenden Inhalt.
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ühren Sie config.py aus, um zu testen, ob Sie die oben genannten Schritte ausgeführt haben.
Öffnen Sie die Datei config.py in IntelliJ IDEA, suchen Sie den Hauptblock und führen Sie die Datei über das Wiedergabesymbol aus.

Sobald wir die Datei ausgeführt haben, sehen wir die Konsole mit der Ausgabe.

In der Funktion read_yaml öffnen wir die Datei config.yml und verwenden die safe_load-Methode des YAML-Pakets, um den Stream als Python-Wörterbuch zu lesen und dieses Wörterbuch dann mit dem Schlüsselwort return zurückzugeben.
Die Variable my_config speichert den Inhalt der Datei config.yml als Wörterbuch. Mit dem hübschen Python-Druckpaket pprint drucken wir das Wörterbuch auf der Konsole.
Beachten Sie die obige Ausgabe. Alle YAML-Tags entsprechen den Python-Datentypen, sodass das Programm diese Werte weiter verwenden kann. Dieser Prozess zum Erstellen von Python-Objekten aus der Texteingabe wird als Deserialisierung bezeichnet.
Schreiben Sie eine YAML-Datei in Python
Öffnen Sie config.py und fügen Sie die folgenden Codezeilen direkt unter der Methode read_yaml und über dem Hauptblock der Datei hinzu.
def write_yaml(data): ''' A function to write YAML file''' with open('toyaml.yml', 'w') as f: yaml.dump(data, f)
In der write_yaml-Methode öffnen wir eine Datei mit dem Namen toyaml.yml im Schreibmodus und verwenden die Dump-Methode der YAML-Pakete, um das YAML-Dokument in die Datei zu schreiben.
Fügen Sie nun die folgenden Codezeilen am Ende der Datei config.py hinzu
# write A python object to a file write_yaml(my_config)
Speichern Sie die Datei config.py und führen Sie die Datei mit dem folgenden Befehl oder mit dem Wiedergabesymbol in der IDE aus.
python config.py
Wir sehen, dass der obige Befehl den Inhalt von config.yml auf die Konsolen- oder Systemausgabe druckt. Das Python-Programm schreibt denselben Inhalt in eine andere Datei namens toyaml.yml. Das Schreiben des Python-Objekts in eine externe Datei wird als Serialisierung bezeichnet.
Mehrere Dokumente in YAML
YAML ist sehr vielseitig und wir können mehrere Dokumente in einer einzigen YAML-Datei speichern.
Erstellen Sie eine Kopie der Datei config.yml als configs.yml und fügen Sie die folgenden Zeilen am Ende der Datei ein.
--- 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
Drei Striche - im obigen Ausschnitt markiert den Beginn eines neuen Dokuments in derselben Datei. Verwendung von | Nach dem Description-Tag können wir einen mehrzeiligen Text vom Typ string schreiben. Hier im neuen Dokument haben wir Fragen und Antworten als separate Zuordnungen gespeichert, die unter Fragen verschachtelt sind.
Erstellen Sie nun eine neue Datei mit dem Namen configs.py und fügen Sie den unten genannten Code in die Datei ein.
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)
Beachten Sie die Änderungen in den Funktionen read_yaml und write_yaml. In read_yaml verwenden wir die safe_load_all-Methode des YAML-Pakets, um alle in configs.yml vorhandenen Dokumente als Liste zu lesen. In ähnlicher Weise verwenden wir in write_yaml die dump_all-Methode, um die Liste aller zuvor gelesenen Dokumente in eine neue Datei mit dem Namen toyaml.yml zu schreiben.
Führen Sie nun configs.py aus.
python configs.py
Die Ausgabe des obigen Befehls wird unten angezeigt.
({'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?'}}}})
Die Ausgabe ähnelt der zuvor erwähnten Ausgabe eines einzelnen Dokuments. Python konvertiert jedes Dokument in der Datei configs.yml in ein Python-Wörterbuch. Dies erleichtert die weitere Verarbeitung und Verwendung der Werte.
Häufig gestellte Fragen
Während der Arbeit mit YAML können Sie auf die folgenden Fragen stoßen.
F # 1) Ist es möglich, die Reihenfolge der YAML-Zuordnungen beizubehalten?
Antworten: Ja, es ist möglich, das Standardverhalten der Loader im pyYAML-Paket von Python anzupassen. Es beinhaltet die Verwendung von OrderedDicts und das Überschreiben des Base Resolvers mit benutzerdefinierten Methoden, wie gezeigt Hier .
F # 2) Wie speichere ich ein Bild in YAML?
Antworten: Sie können ein Bild mit base64 codieren und in YAML behalten, wie unten gezeigt.
image: !!binary | iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==
Q # 3) Was ist der Unterschied zwischen> und |? Tags in YAML?
Antworten: Sowohl> als auch | Ermöglichen das Schreiben von Werten in mehreren Zeilen in YAML. Wir verwenden größer als das Symbol>, um mehrzeilige Zeichenfolgen und | zu schreiben Literalwerte darstellen. Mit | geschriebene Werte muss nicht entkommen werden. Beispielsweise, Wir können HTML mit | speichern.
template: | This is a test paragraph
This is another paragraph
F # 4) Welche Bedeutung hat… am Ende der YAML-Datei?
Antworten: Drei Punkte… sind optionale Bezeichner. Diese können verwendet werden, um das Ende des Dokuments in einem Stream zu markieren.
F # 5) Wie schreibe ich Kommentare in die YAML-Datei?
Antworten: Wir verwenden #, um einen einzeiligen Kommentar zu schreiben. YAML unterstützt keine mehrzeiligen Kommentare. Daher müssen wir # in mehreren Zeilen verwenden, wie unten gezeigt.
# this is # a single line as well as multi-line # comment
Fazit
In diesem Handbuch haben wir die Schritte zum Vorbereiten der Entwicklungsumgebung sowohl unter Windows als auch unter Linux für den Einstieg in YAML behandelt. Wir haben fast alle Konzepte der grundlegenden Datentypen von YAML, des YAML-Editors und des YAML-Parsers besprochen.
Wir haben auch die Vorteile der Verwendung von YAML gegenüber anderen Markup-Sprachen hervorgehoben und Codebeispiele mithilfe eines unterstützenden Beispielprojekts bereitgestellt. Wir hoffen, dass die Lernenden jetzt YAML verwenden können, um Daten aus der Anwendungslogik zu abstrahieren und effizienten und wartbaren Code zu schreiben.
Viel Spaß beim Lernen !!
Literatur-Empfehlungen
- Python-Tutorial für Anfänger (KOSTENLOSES Python-Training zum Anfassen)
- Python-Einführungs- und Installationsprozess
- Python Django Tutorial - Erste Schritte mit Django
- Python DateTime Tutorial mit Beispielen
- Tutorial zur Handhabung von Python-Dateien: Erstellen, Öffnen, Lesen, Schreiben
- TestComplete Tutorial: Ein umfassendes Handbuch für GUI-Testtools für Anfänger
- Python-Steueranweisungen (Python Continue, Break and Pass)
- Python-OOPs-Konzepte (Python-Klassen, Objekte und Vererbung)