yaml tutorial comprehensive guide yaml using python
Ce didacticiel YAML explique ce qu'est YAML, les concepts de base de YAML tels que les types de données, YAML Validator, Parser, Editor, Files, etc. à l'aide d'exemples de code utilisant Python:
Le traitement de texte en informatique aide les programmeurs à créer des programmes et des applications configurables. Les langages de balisage jouent un rôle essentiel dans le stockage et l'échange de données dans un format lisible par l'homme.
En outre, les programmeurs utilisent des langages de balisage comme formats d'échange de données courants et standard entre différents systèmes. Quelques exemples des langages de balisage incluent HTML, XML, XHTML et JSON.
Nous avons partagé des informations sur un autre langage de balisage dans ce tutoriel YAML facile à suivre.
Ce didacticiel aide les lecteurs à trouver des réponses aux questions ci-dessous. Les apprenants peuvent faire les premiers pas et comprendre le mystère des langages de balisage en général et du YAML en particulier.
Les questions comprennent:
- Pourquoi avons-nous besoin de langages de balisage?
- Que signifie YAML?
- Pourquoi YAML a-t-il été créé?
- Pourquoi avons-nous besoin d'apprendre YAML?
- Pourquoi est-il important aujourd'hui d'apprendre YAML?
- Quel type de données puis-je stocker dans un YAML?
Ce guide est également utile pour les lecteurs expérimentés car nous discutons des concepts dans le contexte de la programmation en général, ainsi que dans le contexte des tests de logiciels. Nous aborderons également des sujets tels que la sérialisation et la désérialisation ici.
Ce que vous apprendrez:
Qu'est-ce que YAML
Les créateurs de YAML l'ont initialement appelé «encore un autre langage de balisage». Cependant, avec le temps, l'acronyme est devenu 'YAML n'est pas un langage MarkUp'. YAML est un acronyme qui se réfère à lui-même et s'appelle un acronyme récursif.
Nous pouvons utiliser ce langage pour stocker les données et la configuration dans un format lisible par l'homme. YAML est une langue élémentaire à apprendre. Ses constructions sont également faciles à comprendre.
Clark, Ingy et Oren ont créé YAML pour aborder les complexités de la compréhension d'autres langages de balisage, qui sont difficiles à comprendre, et la courbe d'apprentissage est également plus raide que l'apprentissage de YAML.
Pour rendre l'apprentissage plus confortable, comme toujours, nous utilisons un exemple de projet. Nous hébergeons ce projet sur Github avec une licence MIT pour que quiconque puisse apporter des modifications et soumettre une pull request si nécessaire.
Vous pouvez cloner le projet à l'aide de la commande ci-dessous.
git clone git@github.com:h3xh4wk/yamlguide.git
Cependant, si nécessaire, vous pouvez télécharger le zip fichier pour le code et les exemples.
Les lecteurs peuvent également cloner ce projet à l'aide d'IntelliJ IDEA. Veuillez compléter la section sur les prérequis pour installer Python et le configurer avec IntelliJ IDEA avant de cloner le projet.

Pourquoi avons-nous besoin de langages de balisage
Il est impossible de tout écrire en code logiciel. C'est parce que nous avons besoin de maintenir le code de temps en temps et que nous devons résumer les spécificités des fichiers externes ou des bases de données.
Il est recommandé de réduire le code au minimum possible et de le créer de manière à ne pas nécessiter de modification pour les différentes entrées de données nécessaires.
Par exemple, nous pouvons écrire une fonction pour prendre les données d'entrée d'un fichier externe et imprimer son contenu ligne par ligne plutôt que d'écrire le code et les données ensemble dans un seul fichier.
Elle est considérée comme une bonne pratique car elle sépare les préoccupations de création des données et de création du code. L'approche de programmation consistant à extraire les données du code garantit une maintenance facile.
Les langages de balisage nous permettent de stocker plus facilement les informations hiérarchiques dans un format plus accessible et plus léger. Ces fichiers peuvent être échangés entre des programmes sur Internet sans consommer beaucoup de bande passante et prennent en charge les protocoles les plus courants.
Ces langues suivent une norme universelle et prennent en charge divers encodages pour prendre en charge les caractères de presque toutes les langues parlées dans le monde.
quel est le meilleur logiciel d'optimisation de PC
La meilleure chose à propos des langages de balisage est que leur utilisation générale n'est associée à aucune commande système, et cette caractéristique les rend plus sûrs et est la raison de leur adoption généralisée et mondiale. Par conséquent, vous ne trouverez peut-être aucune commande YAML que nous pouvons exécuter directement pour créer une sortie.
Avantages de l'utilisation d'un fichier YAML
YAML présente de nombreux avantages. Le tableau ci-dessous montre une comparaison entre YAML et JSON. JSON signifie JavaScript Object Notation, et nous l'utilisons comme format d'échange de données.
Attribut | YAML | JSON |
---|---|---|
Verbosité | Moins verbeux | Plus verbeux |
Types de données | Prend en charge les types de données complexes. | Ne prend pas en charge les types de données complexes. |
commentaires | Prend en charge l'écriture de commentaires en utilisant '#'. | Ne prend pas en charge la rédaction de commentaires. |
Lisibilité | Plus lisible par l'homme. | Moins lisible par l'homme. |
Auto-références | Prend en charge le référencement des éléments dans les mêmes documents en utilisant «&» et *. | Ne prend pas en charge l'auto-référencement. |
Documents multiples | Prend en charge plusieurs documents dans un seul fichier. | Prend en charge un seul document dans un seul fichier. |
En raison des avantages de YAML par rapport aux autres formats de fichiers tels que JSON, YAML est plus répandu parmi les développeurs pour sa polyvalence et sa flexibilité.
Conditions préalables
Nous installons d'abord Python, puis configurons Python et ses packages avec IntelliJ IDEA. Par conséquent, veuillez installer IntelliJ IDEA s'il n'est pas déjà installé avant de continuer.
Installez Python
Suivez ces étapes pour installer et configurer Python sur Windows 10.
Étape 1
Télécharger Python et installez-le en sélectionnant la configuration comme indiqué dans l'image ci-dessous.

Étape 2
Démarrez la configuration et sélectionnez personnaliser l'installation. Cochez la case de Ajouter Python à PATH .

Étape 3
Personnalisez l'emplacement de Python tel qu'il apparaît dans l'image.

Étape 4
Allez de l'avant avec l'installation. À la fin de l'assistant d'installation Désactivez la limite de chemin sous Windows en cliquant sur l'option de l'assistant.

La configuration de Python est maintenant terminée.
Configurer Python avec IntelliJ IDEA
Configurons maintenant IntelliJ IDEA avec Python. La première étape consiste à installer les plugins pour pouvoir travailler sur des projets Python.
Installer les plugins Python
Installez Python Community Edition

Installer la sécurité Python

Suivez les étapes ci-dessous pour terminer la configuration.
Étape 1
Utilisez le menu Fichier et accédez aux paramètres de la plate-forme. Clique sur le Ajouter le bouton SDK .

Étape 2
Sélectionnez le Option d'environnement virtuel et sélectionnez l'interpréteur de base de Python comme celui qui a été installé à l'étape précédente.

Étape 3
Sélectionnez maintenant l'environnement virtuel créé à l'étape précédente sous le Paramètres du SDK du projet .

Nous recommandons un environnement virtuel pour un projet.
Étape n ° 4 (facultative)
Ouvrez le fichier config.py depuis l'explorateur de projet et cliquez sur exigences d'installation , comme indiqué dans l'image ci-dessous.

Ignorez l'exigence d'ipython si nécessaire en décochant une option dans la boîte de dialogue Choisir un package.

Vous pouvez maintenant passer à la section suivante pour apprendre les bases de YAML.
Bases de YAML
Dans cette section, nous mentionnons les bases de YAML à l'aide d'un fichier d'exemple appelé config.yml et config.py. Nous croyons fermement qu'expliquer les concepts de YAML en parallèle avec son utilisation dans un langage de programmation améliore l'apprentissage.
Par conséquent, tout en expliquant les bases de YAML, nous impliquons également l'utilisation de Python pour lire et écrire les données stockées dans YAML.
Créons ou ouvrons maintenant le fichier config.yml dans nos éditeurs respectifs et comprenons le 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
Notez que les fichiers YAML ont.lyextension. La langue est sensible à la casse. Nous utilisons des espaces et non des tabulations pour l'indentation.
Parallèlement à ces principes de base, comprenons les types de données. Dans le YAML mentionné, nous avons représenté les informations sur un quiz. Un quiz est décrit comme un nœud de niveau racine, ayant des attributs tels qu'une description, des questions et des réponses.
Types de données YAML
YAML peut stocker des scalaires, des séquences et des mappages. Nous avons montré comment écrire tous les types de données nécessaires dans le fichier config.yml.
Les scalaires sont des chaînes, des entiers, des flottants et des booléens. Les données de type Strings sont placées entre guillemets ». Cependant, YAML n’impose pas l’écriture de chaînes entre guillemets et nous pouvons utiliser> ou | pour écrire de longues chaînes sur plusieurs lignes.
Regardez les différents types de données et valeurs mappées dans le tableau ci-dessous.
Type de données | Exemples de types de données dans Config.yml |
---|---|
Chaîne de caractères Les chaînes peuvent être stockées avec ou sans guillemets. | quiz: description:> Ce quiz est pour apprendre YAML des questions: - 'Qui se trouve le plus sur le Web?' réponses: - chats |
Entier et flottant Les nombres entiers et les flottants sont mentionnés dans leur forme originale | quiz: des questions: - 'Quelle est la valeur de pi?' - 'Combien de membres maximum peuvent jouer au TT?' réponses: - 3.141592653589793 - 4 |
Booléen Les booléens sont stockés en utilisant la chaîne true / false ou yes / no | quiz: des questions: - 'Pluton est-il lié aux relations platoniques?' - «Tu ne sais pas que l'Univers est en constante expansion? réponses: - vrai - ne pas |
Séquences Les séquences sont créées à l'aide de crochets (. | quiz: réponses: - (8, 'pluton') |
Les références L'auto-référencement est utilisé à l'aide de & et * | # conversion de données explicite et réutilisation des blocs de données supplémentaire: refer: & id011 # donne une référence aux données # Autres valeurs encore: * id011 # appeler les données en donnant la référence |
Vous trouverez ci-dessous certains des éléments supplémentaires intéressants d'un fichier YAML.
Document
Maintenant, remarquez les trois tirets -. Cela signifie le début d'un document. Nous stockons le premier document avec un quiz comme élément racine, et la description, les questions et réponses comme éléments enfants avec leurs valeurs associées.
Types de données explicites
Observez la clé de section appelée extra dans le config.yml. Nous voyons qu'à l'aide de doubles exclamations, nous pouvons mentionner explicitement les types de données des valeurs stockées dans le fichier. Nous convertissons un entier en float en utilisant !! float. Nous utilisons !! str pour convertir un entier en chaîne et utiliser !! int pour convertir une chaîne en entier.
Le package YAML de Python nous aide à lire le fichier YAML et à le stocker en interne sous forme de dictionnaire. Python stocke les clés du dictionnaire sous forme de chaînes et convertit automatiquement les valeurs en types de données Python, sauf indication explicite en utilisant «!!».
Lire le fichier YAML en Python
En général, nous utilisons l'éditeur YAML et un validateur YAML au moment de la rédaction de YAML. YAML Validator vérifie le fichier au moment de l'écriture.
Le package Python YAML a un analyseur YAML intégré, qui analyse le fichier avant de le stocker en mémoire.
Maintenant, créons et ouvrons config.py dans nos éditeurs respectifs avec le contenu ci-dessous.
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)
Pour vérifier que vous avez terminé les étapes décrites ci-dessus, exécutez config.py.
Ouvrez le fichier config.py dans IntelliJ IDEA, recherchez le bloc principal et exécutez le fichier à l'aide de l'icône de lecture.

Une fois que nous exécutons le fichier, nous voyons la console avec la sortie.

Dans la fonction read_yaml, nous ouvrons le fichier config.yml et utilisons la méthode safe_load du package YAML pour lire le flux en tant que dictionnaire Python, puis renvoyons ce dictionnaire à l'aide du mot-clé return.
La variable my_config stocke le contenu du fichier config.yml sous forme de dictionnaire. En utilisant le joli package d'impression de Python appelé pprint, nous imprimons le dictionnaire sur la console.
Notez la sortie ci-dessus. Toutes les balises YAML correspondent aux types de données de Python afin que le programme puisse continuer à utiliser ces valeurs. Ce processus de construction d'objets Python à partir de l'entrée de texte est appelé désérialisation.
Ecrire un fichier YAML en Python
Ouvrez config.py et ajoutez les lignes de code suivantes juste en dessous de la méthode read_yaml et au-dessus du bloc principal du fichier.
def write_yaml(data): ''' A function to write YAML file''' with open('toyaml.yml', 'w') as f: yaml.dump(data, f)
Dans la méthode write_yaml, nous ouvrons un fichier appelé toyaml.yml en mode écriture et utilisons la méthode de vidage des packages YAML pour écrire le document YAML dans le fichier.
Ajoutez maintenant les lignes de code ci-dessous à la fin du fichier config.py
# write A python object to a file write_yaml(my_config)
Enregistrez le config.py et exécutez le fichier en utilisant la commande ci-dessous ou en utilisant l'icône de lecture dans l'EDI.
python config.py
Nous voyons que la commande ci-dessus imprime le contenu de config.yml sur la console ou la sortie du système. Le programme Python écrit le même contenu dans un autre fichier appelé toyaml.yml. Le processus d'écriture de l'objet Python dans un fichier externe est appelé sérialisation.
Plusieurs documents dans YAML
YAML est assez polyvalent et nous pouvons stocker plusieurs documents dans un seul fichier YAML.
Créez une copie du fichier config.yml sous le nom configs.yml et collez les lignes ci-dessous à la fin du fichier.
--- 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
Trois tirets - dans l'extrait ci-dessus, marque le début d'un nouveau document dans le même fichier. Utilisation de | après la balise description nous permet d'écrire un texte multiligne de type string. Ici, dans le nouveau document, nous avons stocké les questions et les réponses sous forme de mappages séparés imbriqués sous les questions.
Créez maintenant un nouveau fichier appelé configs.py et collez le code mentionné ci-dessous dans le fichier.
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)
Notez les changements dans les fonctions read_yaml et write_yaml. Dans read_yaml, nous utilisons la méthode safe_load_all du package YAML pour lire tous les documents présents dans configs.yml sous forme de liste. De même, dans write_yaml, nous utilisons la méthode dump_all pour écrire la liste de tous les documents précédemment lus dans un nouveau fichier appelé toyaml.yml.
Exécutez maintenant configs.py.
python configs.py
La sortie de la commande ci-dessus est affichée ci-dessous.
({'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?'}}}})
La sortie est similaire à la sortie de document unique mentionnée précédemment. Python convertit chaque document du configs.yml en un dictionnaire Python. Cela facilite le traitement et l'utilisation ultérieurs des valeurs.
Questions fréquemment posées
Vous pouvez rencontrer les questions ci-dessous en travaillant avec YAML.
Q # 1) Est-il possible de conserver l'ordre des mappages YAML?
Répondre: Oui, il est possible de personnaliser le comportement par défaut des chargeurs dans le package pyYAML de Python. Cela implique l'utilisation de OrderedDicts et le remplacement du résolveur de base avec des méthodes personnalisées, comme indiqué Ici .
Q # 2) Comment stocker une image dans YAML?
Répondre: Vous pouvez encoder une image en base64 et la conserver en YAML, comme indiqué ci-dessous.
image: !!binary | iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==
Q # 3) Quelle est la différence entre> et | tags en YAML?
Répondre: Les deux> et | autorise l'écriture de valeurs sur plusieurs lignes en YAML. Nous utilisons plus de symbole> pour écrire des chaînes multilignes et | pour représenter des valeurs littérales. Valeurs écrites avec | ne doit pas être échappé. Par exemple, nous pouvons stocker Html en utilisant |.
template: | This is a test paragraph
This is another paragraph
Q # 4) Quelle est la signification de… à la fin du fichier YAML.
Répondre: Trois périodes… sont des identifiants facultatifs. Ceux-ci peuvent être utilisés pour marquer la fin du document dans un flux.
Q # 5) Comment écrire des commentaires dans le fichier YAML?
Répondre: Nous utilisons # pour écrire un commentaire sur une seule ligne. YAML ne prend pas en charge les commentaires sur plusieurs lignes. Ainsi, nous devons utiliser # dans plusieurs lignes, comme indiqué ci-dessous.
# this is # a single line as well as multi-line # comment
Conclusion
Dans ce guide, nous avons couvert les étapes de préparation de l'environnement de développement sous Windows et Linux pour démarrer avec YAML. Nous avons presque discuté de tous les concepts des types de données de base de YAML, de l'éditeur YAML et de l'analyseur YAML.
Nous avons également souligné les avantages de l'utilisation de YAML par rapport à d'autres langages de balisage et fourni des exemples de code à l'aide d'un exemple de projet de support. Nous espérons que les apprenants pourront désormais utiliser YAML pour extraire des données de la logique d'application afin d'écrire du code efficace et maintenable.
Bon apprentissage!!
lecture recommandée
- Tutoriel Python pour les débutants (formation pratique gratuite sur Python)
- Processus d'introduction et d'installation de Python
- Tutoriel Python Django - Premiers pas avec Django
- Tutoriel Python DateTime avec des exemples
- Tutoriel sur la gestion de fichiers Python: Comment créer, ouvrir, lire, écrire
- Tutoriel TestComplete: Un guide complet de l'outil de test GUI pour les débutants
- Instructions de contrôle Python (Python Continue, Break et Pass)
- Concepts de POO Python (classes, objets et héritage Python)