Geekflare est soutenu par son public. Nous pouvons percevoir des commissions d'affiliation sur les liens d'achat présents sur ce site.
En Développement Dernière mise à jour : 25 septembre 2023
Partager sur :
Invicti Web Application Security Scanner - la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

YAMLLangage de balisage Ain't (YAML) est un langage de sérialisation des données pour la plupart des langages de programmation. Comprenons-le en détail.

YAML est un surensemble strict de JSON, donc tout ce qui est écrit en JSON peut être analysé en YAML. Il est principalement utilisé pour les fichiers de configuration dans les projets et il est très facile de comprendre et de lire le code.

L'extension des fichiers YAML est .yaml ou .yml

Dans ce tutoriel, nous allons apprendre les différents types de données présents dans YAML et travailler avec YAML en Python. À la fin de ce tutoriel, vous serez en mesure de comprendre le YAML et sa syntaxe.

Je suppose que vous êtes familier avec Python, si ce n'est pas le cas, consultez les ressources d'apprentissage de Python.

Le YAML suit une syntaxe d'indentation similaire à celle de Python. Mais il n'autorise pas la tabulation (rappelez-vous-en lorsque vous écrivez des fichiers YAML) pour l'indentation.

Configuration

  • Installez un module Python appelé pyyaml pour travailler avec des fichiers YAML .
pip install pyyaml
  • Copiez et collez le code suivant dans un fichier et enregistrez-le sous le nom de yaml_script.py
import yaml

yaml_file = open("learn_yaml.yaml", 'r')
yaml_content = yaml.load(yaml_file)

print("Key : Value")
for key, value in yaml_content.items() :
 print(f"{key} : {value}")
  • Nous allons utiliser le script ci-dessus pour convertir le code YAML en Python et vérifier les différents types de données.
  • Créez un fichier appelé learn_yaml.yaml et mettez-y en pratique les différents exemples que nous allons aborder dans ce tutoriel.

Sans plus attendre, entrons dans la section des types de données du YAML.

Type de données en YAML

Tout ce qui se trouve dans le YAML est une paire clé-valeur.

Dans les différents langages de programmation, les paires clé-valeur sont appelées différemment : dictionnaires, hachages, objets, etc... Ce sont les éléments constitutifs du YAML.

Les clés peuvent être des chaînes (entre guillemets ou normales), des flottants ou des entiers (la prise en charge peut changer dans une future mise à jour). Les valeurs peuvent être de n'importe quel type de données prises en charge par YAML.

Voyons les différents types de données présents dans YAML.

Nombres

YAML prend en charge les nombres entiers, les nombres flottants et les nombres flottants exponentiels.

integer : 123
float : 123.123
exponential_float : 1.34e 3

Lorsque vous évaluez le code ci-dessus avec le script Python, vous obtenez le résultat suivant.

Clé : Valeur
integer : 123
float : 123.123
exponential_float : 1340.0

Nous pouvons représenter les valeurs dans différents systèmes numériques comme le décimal, l'octal et l' hexadécimal.

  • Le zéro (0 ) initial indique qu'il s'agit d'un nombre octal.
  • Le préfixe 0x représente sa valeur hexadécimale.

Voyez l'exemple ci-dessous.

entier : 123
octal : 0123
hexa : 0x123

Nous pouvons voir les valeurs décimales converties des valeurs octales et hexadécimales en exécutant notre script Python. Vous devriez voir la sortie exacte comme suit.

Clé : Valeur
entier : 123
octal : 83
hexa : 291

Une autre caractéristique intéressante de YAML est que nous pouvons représenter NAN (Not A Number) et l'infini.

not_a_number : .NAN
infinity : .inf
negative_infinity : -.inf

Exécutez le script Python, vous verrez les valeurs de NAN et inf converties en Python.

Clé : Valeur
not_a_number : nan
infinity : inf
negative_infinity : -inf

C'est tout pour les types numériques en YAML.

Chaînes de caractères

Les chaînes de caractères en YAML peuvent être représentées avec ou sans guillemets. Les deux sont similaires. Contrairement à JSON, il n'y a pas de règle stricte pour mettre chaque chaîne entre guillemets. Mais si nous devons utiliser les séquences d'échappement, nous devons utiliser des guillemets doubles.

Voyons quelques exemples de chaînes de caractères.

chaîne : Hi, there I am a string
string with escape character : Hi, I am a newline \n character. Et je ne fonctionne pas :(
string with working escape character : "Hi, I am a newline \n character. Et je travaille :)"

Le caractère de retour à la ligne dans la paire clé-valeur de la section fonctionne comme prévu. Comme nous l'avons déjà dit, nous devons utiliser des guillemets doubles pour travailler avec des séquences d'échappement.

Nous avons utilisé des guillemets doubles dans la paire clé-valeur suivante et cela fonctionne comme prévu. Interprétez le code YAML ci-dessus avec notre script Python. Vous obtiendrez le résultat suivant.

Clé : Valeur
string : Hi, there I am a string
string with escape character : Hi, I am a newline \n character. Et je ne fonctionne pas :(
string with working escape character : Hi, I am a newline 
character. Et je fonctionne :)

Il existe deux caractères spéciaux dans YAML que nous pouvons utiliser pour écrire plusieurs phrases comme valeur d'une clé. Imaginons que nous devions diviser une longue phrase en plusieurs lignes. Dans ce type de scénario, nous pouvons utiliser le caractère pli (plus grand que >) ou bloc (tuyau |) pour écrire plusieurs lignes.

Quelle est la différence entre les caractères de pliage et de blocage ? J'y viens.

Le caractère depliage n'interprète pas les nouvelles lignes, alors que le caractère de bloc le fait.

Voyons les exemples.

chaîne de plusieurs lignes avec caractère fold : >
 Il s'agit d'une chaîne de plusieurs lignes de

 avec caractère fold
. N'oubliez pas d'utiliser
 indentation. Les nouvelles lignes ne seront pas
 interprétées.
chaîne de plusieurs lignes avec caractère de bloc : |
 Il s'agit d'une chaîne de plusieurs lignes

 avec le caractère de pliage
. N'oubliez pas d'utiliser l'indentation
. Les nouvelles lignes seront interprétées
.

Exécutez le script Python et vous verrez la différence entre les caractères plier et bloc . Et n'oubliez pas d'utiliser l'indentation.

Clé : Valeur
chaîne de plusieurs lignes avec caractère de pliage : Il s'agit d'une chaîne de plusieurs lignes avec un caractère de pliage. N'oubliez pas d'utiliser l'indentation. Les nouvelles lignes ne seront pas interprétées.

multiple lines string with block character : Il s'agit d'une chaîne de plusieurs lignes

 avec le caractère de pliage
. N'oubliez pas d'utiliser
l'indentation. Les nouvelles lignes seront
interprétées.

Booléens

En YAML, nous pouvons représenter les valeurs booléennes Vrai et Faux de trois manières différentes. Regardez-les.

  • Les valeurs Vrai, sur et Oui sont considérées comme Vrai dans YAML.
  • Les valeurs Faux, Off et Non sont considérées comme Faux fr YAML.
random_key_1 : True
random_key_2 : On
random_key_3 : Yes
random_key_4 : False
random_key_5 : Off
random_key_6 : No

Si vous interprétez le code YAML ci-dessus, vous obtiendrez les 3 premières valeurs de clé comme Vrai et les 3 suivantes comme Faux.

Clé : Valeur
random_key_1 : True
random_key_2 : True
random_key_3 : True
random_key_4 : False
random_key_5 : False
random_key_6 : False

Nul

YAML prend en charge la valeur null de la même manière que JSON. Nous pouvons utiliser le mot-clé nul ou le symbole tilde(~) pour définir la valeur null en YAML. YAML a de belles alternatives, n'est-ce pas ? Oui, elles sont plutôt cool.

null_case_1 : null
null_case_2 : ~

Exécutez le script Python. Vous obtiendrez les deux valeurs comme Aucun voiture Python utiliser Aucun au lieu du mot-clé nul .

Clé : Valeur
null_case_1 : None
null_case_2 : None

Tableaux

Nous pouvons spécifier les tableaux de la même manière que Python dans YAML. Ou nous pouvons écrire tous les éléments du tableau dans des lignes séparées précédées d'un trait d'union (-). Voyons un exemple pour chaque représentation.

langages_de_programmation : [Python, JavaScript, C, HTML, CSS]
bibliothèques : [React, TailwindCSS]

Dans le code YAML ci-dessus, nous avons utilisé des crochets similaires aux listes Python. Voyons une autre façon de représenter les tableaux en YAML (cela ressemble aux listes markdown).

langages_de_programmation :
 - Python
 - JavaScript
 - C
 - HTML
 - CSS
bibliothèques :
 - React
 - TailwindCSS

Si vous utilisez notre script Python pour interpréter les exemples ci-dessus. Vous obtiendrez la sortie suivante.

langages_de_programmation : [Python, JavaScript, C, HTML, CSS]
bibliothèques : [React, TailwindCSS]

Nous pouvons avoir des dictionnaires dans la liste et pas seulement des chaînes de caractères, des nombres, etc..,

langages_de_programmation :
- Python :
auteur : Guido van Rossum
- JavaScript :
auteur : Brendan Eich
- C :
auteur : Dennis Ritchie
libraries :
- React :
popularity : High
- TailwindCSS :
popularity : High

Vous obtiendrez un tableau de dictionnaires si vous interprétez le code YAML ci-dessus avec notre script Python.

Clé : Valeur
programming_languages : [{'Python' : {'author' : 'Guido van Rossum'}}, {'JavaScript' : {'auteur' : 'Brendan Eich'}}, {'C' : {'auteur' : 'Dennis Ritchie'}}]
libraries : [{'React' : {'popularité' : 'High'}}, {'TailwindCSS' : {'popularité' : 'High'}}]

Dictionnaires

Nous avons déjà vu la syntaxe des dictionnaires dans les exemples ci-dessus. Pour résumer rapidement, les dictionnaires sont des paires clé-valeur. Nous pouvons utiliser n'importe quel type de données valide comme valeur de la clé. YAML supporte même les dictionnaires imbriqués.

Voyons un exemple.

dictionnaire :
 je suis clé : je suis valeur

dictionnaire imbriqué :
 clé imbriquée :
 je suis clé imbriquée : je suis valeur imbriquée

Si vous interprétez le code ci-dessus, vous obtiendrez le même résultat.

Clé : Valeur
dictionnaire : {'i am key' : 'i am value'}
nested dictionary : {'nested key' : {'i am nested key' : 'i am nested value'}}

Savez-vous que vous pouvez convertir une liste en dictionnaire en Python?

Ensemble

YAML prend en charge un autre type de données appelé set. Set contient des valeurs uniques similaires au type de données set de Python. Les éléments de set sont précédés du point d'interrogation ( ?) comme les éléments de liste précédés de traits d'union (-).

Nous devons mentionner que le type de données est set en utilisant !set après le nom du set.

Regardez l'exemple suivant.

i am a set : !!set
? 1
? 2
? 2
? 3

Comme set ne contient que des valeurs uniques, vous n'obtiendrez pas 2 deux fois lorsque vous interprétez le code YAML ci-dessus avec notre script Python.

Voyons le résultat.

Clé : Valeur
set : {1, 2, 3}

Nous pouvons également représenter l'ensemble de manière similaire à la syntaxe Python comme suit.

je suis un ensemble : !!ensemble
 {1, 2, 2, 3}

Vous obtiendrez le même résultat que dans l'exemple ci-dessus.

C'est tout pour les types de données en YAML. Voyons maintenant quelques fonctionnalités supplémentaires de YAML.

Commentaires

YAML prend en charge les commentaires. C'est génial. Nous pouvons écrire des commentaires en YAML en commençant par un symbole dièse (#) .

# Je suis un commentaire
yaml est génial : # Je suis aussi un commentaire

Si vous interprétez le code YAML ci-dessus, vous obtiendrez une clé vide avec une valeur nulle.

Clé : Valeur
yaml is great : Aucun

YAML ne supporte pas les commentaires sur plusieurs lignes. Nous devons écrire plusieurs lignes commençant par un dièse pour les commentaires multilignes, comme en Python.

Ancres

Lesancres nous permettent de copier le contenu d'une clé où nous voulons dans le document entier. C'est très pratique si vous souhaitez dupliquer certains contenus dans le document.

Pour utiliser les ancres, nous devons leur donner un nom, comme un nom de variable dans les langages de programmation. Ensuite, nous pouvons l'utiliser dans tout le document où nous le souhaitons.

Nous pouvons définir le nom de l'ancre en utilisant & et l'utiliser avec *. Voyons un exemple.

# duplicate_data est le nom de l'ancre
data : &duplicate_data Ce contenu doit dupliquer

# dopant les données
duplicate_data : *duplicate_data

Dans l'exemple ci-dessus, nous avons utilisé une ancre dupliquer_données pour copier la valeur de la clé de données . Les deux clés contiennent les mêmes valeurs si vous interprétez le YAML ci-dessus.

Clé : Valeur
data : Ce contenu doit être dupliqué
duplicate_data : Ce contenu est à dupliquer

Conclusion

J'espère que vous avez bien compris YAML. Maintenant, vous pouvez utiliser YAML dans le fichier de configuration de votre prochain projet. Vous pouvez vous référer au site officiel de YAML pour obtenir des informations plus avancées.

Bon codage 🙂 .

  • Hafeezul Kareem Shaik
    Auteur
Merci à nos sponsors
D'autres lectures intéressantes sur le développement
Alimentez votre entreprise
Quelques outils et services pour aider votre entreprise à se développer.
  • Invicti utilise le Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, search engine crawler, et tout ce dont vous avez besoin pour collecter des données web.
    Essayez Brightdata
  • Monday.com est un système d'exploitation tout-en-un qui vous aide à gérer vos projets, vos tâches, votre travail, vos ventes, votre CRM, vos opérations, vos flux de travail et bien plus encore.
    Essayez le lundi
  • Intruder est un scanner de vulnérabilité en ligne qui détecte les faiblesses de votre infrastructure en matière de cybersécurité, afin d'éviter des violations de données coûteuses.
    Essayer l'intrus