Lors de la configuration d'un environnement cloud natif tel que kubernetes, les fichiers au format yaml sont souvent lus. J'ai pensé que ce serait une bonne idée d'utiliser le yaml sans le savoir bien, donc cette fois j'ai étudié en bougeant mes mains.
Depuis site officiel de yaml 「“YAML Ain’t Markup Language” 」
C'est une manière d'écrire une structure de données représentée par un acronyme de récurrence signifiant "yaml n'est pas un langage de balisage".
YAML a les sept objectifs de conception suivants.
Lorsqu'il s'agit de données yaml, il y a load et dump. Load est le flux dans lequel le programme comprend les données yaml, tandis que dump est le flux dans lequel le programme les convertit en données yaml. En d'autres termes, vu depuis l'application, ce n'est pas grave si vous comprenez que l'entrée de yaml est "load" et la sortie de yaml est "dump". Depuis le site officiel "3.1 Aperçu du traitement"
En fait, bougez vos mains et réfléchissez. Cette fois, je vais en fait gérer yaml en utilisant python3 comme langage de programmation.
Il existe un package appelé pyyaml pour utiliser yaml avec python.
Installez à l'aide de pip.
pip install pyyaml
Écrivez et vérifiez le code pour la charge qui lit yaml et le dump qui génère yaml. L'environnement que j'ai essayé est le suivant.
Créez un fichier yaml (test.yaml) comme suit.
test.yaml
env:
python:3.7.3
pyYAML:5.3.1
Obtenez les informations de version écrites en yaml avec python.
Créez du code python (data-reader.py) pour lire yaml dans le même dossier que test.yaml.
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("Logiciel/nom du paquet:Version obtenue")
print("python: {}".format(config['env']['python']))
print("pyYAML: {}".format(config['env']['pyYAML']))
J'ai ouvert le terminal et exécuté le code python comme ci-dessous. Il a été confirmé que les données acquises à partir de yaml avaient été converties en un type de dictionnaire multicouche et que les informations de version souhaitées pouvaient être récupérées.
$ python3 data-reader.py
#### data_chcek ####
{'env': {'python': '3.7.3', 'pyYAML': '5.3.1'}}
####################
Logiciel/nom du paquet:Version obtenue
python: 3.7.3
pyYAML: 5.3.1
Créez des données de type dictionnaire comme exemple, convertissez les données créées au format yaml et exportez-les. J'ai créé le code python (data-writer.py) comme suit.
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)
Ouvrez le terminal et exécutez le code python comme suit. À la suite de l'exécution, il a été confirmé que les données de type dictionnaire créées dans l'exemple étaient converties au format yaml.
$ python3 data-writer.py
#### data_check ####
apple: 2
banana: 3
orange: 4
####################
output to output_file.yaml
Vous pouvez vérifier le contenu du fichier de sortie ci-dessous.
$ cat output_file.yaml
apple: 2
banana: 3
orange: 4
À propos de yaml, j'ai lu le document et confirmé le comportement lors de l'écriture du code. Dans le futur, j'aimerais approfondir mes connaissances sur yaml tout en prêtant attention à la fois au chargement et au dump.
Recommended Posts