Nouveau : Datasets open source gratuits disponibles !Decouvrir →
📋
Debutant 15 min YAML

YAML : guide pratique

Pourquoi YAML : guide pratique ?

Contexte réel : pourquoi un dev a besoin de ca au quotidien

YAML est une langue de description des données qui est largement utilisé dans les fichiers de configuration, les spécifications d'API et les fichiers de données structurées. En tant que développeur, avoir une compréhension solide de YAML peut vous permettre de travailler efficacement avec ces types de fichiers. Par exemple, dans un projet web moderne, le fichier docker-compose.yml utilise YAML pour définir la configuration des services Docker.

Un cas d'utilisation concret en 2-3 phrases

Considérez une application qui nécessite de gérer les configurations de l'application en utilisant des fichiers YAML. Par exemple, vous pourriez avoir un fichier config.yml qui contient toutes les variables d'environnement et la configuration de votre application.

Prerequis

  • Connaissance de base de la programmation
  • Un éditeur de code (VSCode recommandé)
  • Installation de Python 3.7+
  • Installation de Docker (optionnel, pour les projets docker-compose)

Concepts fondamentaux

Structure de base d'un fichier YAML

Un fichier YAML est basé sur une structure de clés et de valeurs. Les données sont organisées en sections, chaque section étant définie par une clé suivie d'une valeur.

## Exemple de structure de base
nom: John Doe
age: 30
adresse:
  rue: 123 Main St
  ville: New York

Commentaires

Les commentaires en YAML sont ajoutés avec le symbole #.

## Ceci est un commentaire
nom: John Doe # Ce commentaire suit une clé

Types de données

YAML prend en charge plusieurs types de données, notamment les chaînes de caractères, les nombres entiers et réels, les listes, les dictionnaires et les booleans.

## Exemple de différents types de données
nom: John Doe
age: 30
est_majeur: true
hobbies:
  - Lecture
  - Sport

Alias et Ancre

Les alias et ancre permettent de réutiliser des blocs de code.

## Exemple d'alias et d'ancre
base_config: &base_config
  nom: John Doe
  age: 30

personne:
  <<: *base_config # Utilisation de l'ancre
  adresse: New York

Mise en pratique : projet fil rouge

Construisons un mini-projet complet et réaliste : Un gestionnaire de tâches

Étape 1 : Créer le fichier tasks.yml

Créer un fichier tasks.yml avec les tâches suivantes :

taches:
  - nom: "Nettoyer la maison"
    priorite: 2
  - nom: "Faire les courses"
    priorite: 1

Étape 2 : Créer le fichier app.py

Créer un fichier app.py pour lire et afficher les tâches :

## app.py

import yaml

## Lire le fichier YAML
with open('tasks.yml', 'r') as file:
    tasks = yaml.safe_load(file)

## Afficher les tâches
for task in tasks['taches']:
    print(f"Tâche: {task['nom']}, Priorité: {task['priorite']}")

Étape 3 : Exécuter le script

Dans votre terminal, exécutez le script :

python app.py

Le résultat devrait être :

Tâche: Nettoyer la maison, Priorité: 2
Tâche: Faire les courses, Priorité: 1

Erreurs fréquentes et debugging

Erreur 1 : Syntaxe incorrecte

## ❌ Mauvais
taches:
- nom: "Nettoyer la maison"
  priorite: 2
- nom: Faire les courses" # Manque une virgule
  priorite: 1

Correction :

## ✅ Correct
taches:
- nom: "Nettoyer la maison"
  priorite: 2
- nom: "Faire les courses" # Ajout de la virgule
  priorite: 1

Erreur 2 : Utilisation incorrecte des alias et d'ancre

## ❌ Mauvais
base_config:
  nom: John Doe
  age: 30

personne:
  <<: base_config # Utilisation incorrecte de l'ancre
  adresse: New York

Correction :

## ✅ Correct
base_config: &base_config
  nom: John Doe
  age: 30

personne:
  <<: *base_config # Utilisation correcte de l'ancre
  adresse: New York

Erreur 3 : Problème avec safe_load

## ❌ Mauvais
taches:
- nom: "Nettoyer la maison"
  priorite: 2
- nom: Faire les courses" # Manque une virgule
  priorite: 1

Correction :

## ✅ Correct
import yaml

## Lire le fichier YAML
with open('tasks.yml', 'r') as file:
    tasks = yaml.safe_load(file)

## Afficher les tâches
for task in tasks['taches']:
    print(f"Tâche: {task['nom']}, Priorité: {task['priorite']}")

Pour aller plus loin

  1. Intégration avec Docker : Utilisez YAML pour configurer des services et des applications complexes avec Docker Compose.

  2. Configuration des environnements : Gérer les configurations de différents environnements (développement, production) en utilisant des fichiers YAML.

  3. Spécification d'API avec Swagger/OpenAPI : Utilisez YAML pour définir et documenter les API RESTful.

Défi pratique à réaliser seul

Créer un fichier users.yml avec des utilisateurs et leurs rôles. Ensuite, créer un script Python qui lit ce fichier et affiche tous les utilisateurs et leurs rôles.

## users.yml
utilisateurs:
  - nom: John Doe
    role: Admin
  - nom: Jane Smith
    role: Utilisateur

Ensuite, créez le fichier app.py pour lire et afficher les utilisateurs :

## app.py

import yaml

## Lire le fichier YAML
with open('users.yml', 'r') as file:
    users = yaml.safe_load(file)

## Afficher les utilisateurs
for user in users['utilisateurs']:
    print(f"Nom: {user['nom']}, Rôle: {user['role']}")

Exécutez le script :

python app.py

Le résultat devrait être :

Nom: John Doe, Rôle: Admin
Nom: Jane Smith, Rôle: Utilisateur

Besoin d'aide sur YAML ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.