Beim Einrichten einer Cloud-nativen Umgebung wie Kubernetes werden häufig Dateien im Yaml-Format gelesen. Ich dachte, es wäre eine gute Idee, es zu verwenden, ohne Yaml gut zu kennen, also lernte ich diesmal tatsächlich, während ich meine Hände bewegte.
Von der offiziellen Yamam-Website 「“YAML Ain’t Markup Language” 」
Es ist eine Möglichkeit, eine Datenstruktur zu schreiben, die durch ein wiederkehrendes Akronym dargestellt wird, das "yaml ist keine Auszeichnungssprache" bedeutet.
YAML hat die folgenden sieben Designziele.
Beim Umgang mit Yaml-Daten gibt es Load and Dump. Laden ist der Fluss, in dem das Programm Yaml-Daten versteht, während Dump der Fluss ist, in dem das Programm sie in Yaml-Daten konvertiert. Mit anderen Worten, es ist in Ordnung, wenn Sie verstehen, dass die Eingabe von yaml "load" und die Ausgabe von yaml "dump" ist, wenn Sie sie in der App anzeigen. Von der offiziellen Website "3.1 Verarbeitungsübersicht"
Bewegen Sie tatsächlich Ihre Hände und denken Sie nach. Dieses Mal werde ich mit yaml umgehen und Python3 als Programmiersprache verwenden.
Es gibt ein Paket namens pyyaml, um yaml mit Python zu verwenden.
Mit pip installieren.
pip install pyyaml
Schreiben und überprüfen Sie den Code für das Laden von yaml und den Dump, der yaml ausgibt. Die Umgebung, die ich ausprobiert habe, ist wie folgt.
Erstellen Sie eine Yaml-Datei (test.yaml) wie folgt.
test.yaml
env:
python:3.7.3
pyYAML:5.3.1
Holen Sie sich die Versionsinformationen in yaml mit Python geschrieben.
Erstellen Sie Python-Code (data-reader.py), um yaml im selben Ordner wie test.yaml zu lesen.
data-reader.py
#!/usr/bin/env python3
from yaml import load, dump
try:
from yaml import CLoader as Loader, CDumper as Dumper
except ImportError:
from yaml import Loader, Dumper
with open('test.yaml', 'r') as yml:
config = load(yml, Loader=Loader)
print("#### data_chcek ####")
print(config)
print("####################")
print("Software/Paketnamen:Erhaltene Version")
print("python: {}".format(config['env']['python']))
print("pyYAML: {}".format(config['env']['pyYAML']))
Ich habe das Terminal geöffnet und den Python-Code wie folgt ausgeführt. Es wurde bestätigt, dass die von yaml erfassten Daten in einen mehrschichtigen Wörterbuchtyp konvertiert wurden und die gewünschten Versionsinformationen abgerufen werden konnten.
$ python3 data-reader.py
#### data_chcek ####
{'env': {'python': '3.7.3', 'pyYAML': '5.3.1'}}
####################
Software/Paketnamen:Erhaltene Version
python: 3.7.3
pyYAML: 5.3.1
Erstellen Sie Daten vom Typ Wörterbuch als Beispiel, konvertieren Sie die erstellten Daten in das Yaml-Format und geben Sie sie aus. Ich habe den Python-Code (data-writer.py) wie folgt erstellt.
data-writer.py
#!/usr/bin/env python3
from yaml import load, dump
try:
from yaml import CLoader as Loader, CDumper as Dumper
except ImportError:
from yaml import Loader, Dumper
# making data for yaml
item_list = ['apple', 'banana', 'orange']
amounts = [2, 3, 4]
sample_data = {item:value for item, value in zip(item_list, amounts)}
# data output to yaml
output = dump(sample_data, Dumper=Dumper)
with open("output_file.yaml", 'w') as yml:
yml.write(output)
Öffnen Sie das Terminal und führen Sie den Python-Code wie folgt aus. Als Ergebnis der Ausführung wurde bestätigt, dass die im Beispiel erstellten Wörterbuchtypdaten in das Yaml-Format konvertiert wurden.
$ python3 data-writer.py
#### data_check ####
apple: 2
banana: 3
orange: 4
####################
output to output_file.yaml
Sie können den Inhalt der Ausgabedatei unten überprüfen.
$ cat output_file.yaml
apple: 2
banana: 3
orange: 4
Über Yaml habe ich das Dokument gelesen und das Verhalten beim eigentlichen Schreiben des Codes bestätigt. In Zukunft möchte ich mein Wissen über Yaml vertiefen und dabei sowohl auf das Laden als auch auf das Abladen achten.
Recommended Posts