ConfigParser – les fichiers de configuration en Python

Les fichiers de configuration sont des fichiers spéciaux qui stockent des données et des paramètres spécifiques pour les programmes informatiques.

ConfigParser - les fichiers de configuration en Python

La plupart des programmes informatiques lisent leurs fichiers de configuration au démarrage et vérifient régulièrement les modifications apportées à ces fichiers.

Les fichiers peuvent être utilisés pour modifier les paramètres de l’application sans avoir besoin de recompiler les programmes. En général, chaque fichier de configuration se compose de différentes sections. Chaque section contient des paires clé et valeur comme un dictionnaire Python.

ConfigParser est une classe Python qui fournit une structure similaire aux fichiers INI de Microsoft Windows. Elle permet d’écrire des programmes Python qui peuvent être personnalisés facilement par les utilisateurs. Sous Linux, on trouve des fichiers «.conf» au lieu des fichiers «.ini».

Un fichier de configuration est constitué de sections, avec des paires clé/valeur. Les noms de section sont délimités par des crochets []. Les clé/valeur sont séparées par : ou =.
Les commentaires commencent par # ou par ;.

Voici un exemple de fichier qui se compose de 2 sections :

[Personne]
Nom = Adrien Robert 
Age = 28
Ville = Paris
[Formation]
Langage = Python
Langue = anglais

Créer un fichier de configuration avec le module Python ConfigParser

Nous allons maintenant créer le fichier de configuration en utilisant le module Python ConfigParser.

Tout d’abord, nous allons créer un objet ConfigParser et ajouter des sections qui sont essentiellement des dictionnaires contenant des éléments clé-valeur. Ensuite, nous sauvegardons le fichier de configuration avec l’extension « .ini ».

Créons un fichier test.py, qui contiendra le code ci-dessous.

import configparser

# créer un objet configparser
config = configparser.ConfigParser()
# définir les sections et les clé/valeur
config["Personne"]={
    "Nom" : "Adrien Robert",
    "Age" : "28 ans",
    "Ville" : "Paris"
}
config["Formation"]={
    "Langage" : "Python",
    "Langue" : "anglais"
}
# Enregistrer le fichier de configuration
# Sous windows remplacer .conf par .ini
with open("fichier.conf", 'w') as f:
    config.write(f)
print("Le fichier de configuration fichier.conf a été créé")
# Afficher le contenu du fichier
lire = open("fichier.conf", 'r')
contenu = lire.read()
print("Le contenu du fichier de configuration est :")
print(contenu)

La première instruction du code ci-dessus importe le module ConfigParser. La deuxième instruction crée un objet de type dictionnaire appelé config. Vous pouvez maintenant utiliser la syntaxe standard du dictionnaire Python pour définir les sections et les variables, comme le montrent les deux instructions suivantes. Enfin, l’instruction with open crée un nouveau fichier fichier.conf et écrit les sections de configuration dans le fichier.

L’exécution du script.

Le fichier de configuration fichier.conf a été créé
Le contenu du fichier de configuration est :
[Personne]
nom = Adrien Robert
age = 28 ans
ville = Paris

[Formation]
langage = Python
langue = anglais

Ajouter une nouvelle section dans les fichiers de configuration avec ConfigParser

Nous allons ajouter une nouvelle section Loisirs dans le fichier fichier.conf qui contient déjà les sections Personne et Formation.

import configparser
# Afficher le contenu initial du fichier
lire = open("fichier.conf", 'r')
contenu = lire.read()
print("Le contenu du fichier de configuration est :")
print(contenu)

# créer un nouvel objet de configuration
config_obj = configparser.ConfigParser()

# lire le fichier de configuration dans l'objet
config_obj.read("fichier.conf")

# ajouter une nouvelle section
config_obj["Loisirs"]={
    "Sport" : "Football"
}

# enregistrer l'objet de configuration dans le fichier
with open("fichier.conf","w") as fichier_objet:
    config_obj.write(fichier_objet)

# afficher le nouveau fichier de configuration
print("Modification du fichier de configuration")
n_lire = open("fichier.conf", 'r')
n_contenu = n_lire.read()
print(n_contenu)

L’exécution du code.

Le contenu du fichier de configuration est :
[Personne]
nom = Adrien Robert
age = 28 ans
ville = Paris

[Formation]
langage = Python
langue = anglais

Modification du fichier de configuration
[Personne]
nom = Adrien Robert
age = 28 ans
ville = Paris

[Formation]
langage = Python
langue = anglais

[Loisirs]
sport = Football

Nous pouvons également utiliser la méthode add_section() pour ajouter une nouvelle section, puis utiliser la méthode set() pour ajouter de nouveaux champs dans la section.

# ajouter une nouvelle section
config_obj.add_section("Loisirs")
config_obj.set("Loisirs", "sport", "football")

En fait, la méthode add_section() prend le nom de la section comme argument tandis que la méthode set() prend le nom de la section comme premier argument, le nom du champ comme deuxième argument et la valeur du champ comme troisième argument.

Mettre à jour les données dans les fichiers de configuration

Les opérations applicables sur les dictionnaires sont également applicables sur les sections des fichiers de configuration.
Nous allons ajouter un nouveau champ dans la section Personne.

import configparser

# créer un nouvel objet de configuration
config_obj = configparser.ConfigParser()

# lire le fichier de configuration dans l'objet
config_obj.read("fichier.conf")

# ajouter un nouveau champs
config_obj["Personne"]["poids"] = "80 kg"
config_obj.set("Loisirs", "sport", "football")

# enregistrer l'objet de configuration dans le fichier
with open("fichier.conf","w") as fichier_objet:
    config_obj.write(fichier_objet)

# afficher le nouveau fichier de configuration
print("Modification du fichier de configuration")
n_lire = open("fichier.conf", 'r')
n_contenu = n_lire.read()
print(n_contenu)

De plus, il est possible d’utiliser la méthode update() pour ajouter de nouveaux champs ainsi que pour modifier les champs existants. Si le champ donné en argument n’existe pas dans le fichier, un nouveau champ sera créé.

Supprimer des données dans un fichier de configuration

Nous pouvons supprimer les données des fichiers de configuration en utilisant les méthodes remove_option() et remove_section(). On utilise remove_option() pour supprimer un champ de n’importe quelle section et remove_section() pour supprimer une section complète du fichier de configuration.

import configparser

# créer un nouvel objet de configuration
config_obj = configparser.ConfigParser()

# lire le fichier de configuration dans l'objet
config_obj.read("fichier.conf")

# supprimer un champ
config_obj.remove_option("Personne","poids")
# supprimer une section
config_obj.remove_section("Loisirs")

# enregistrer l'objet de configuration dans le fichier
with open("fichier.conf","w") as fichier_objet:
    config_obj.write(fichier_objet)

# afficher le nouveau fichier de configuration
print("Modification du fichier de configuration")
n_lire = open("fichier.conf", 'r')
n_contenu = n_lire.read()
print(n_contenu)

La méthode remove_option() prend le nom de la section comme premier argument et le nom du champ comme deuxième argument tandis que la méthode remove_section() prend le nom de la section à supprimer comme argument.

ConfigParser – les fichiers de configuration en Python

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Retour en haut