Gestion des fichiers de configuration avec configparser en Python

Création de fichiers de configuration

Le module configparser permet de gérer facilement les fichiers de configuration au format INI. Voici comment créer un fichier de configuraton nommé config_exemple.ini :


import configparser

# Initialisation de l'objet ConfigParser
config = configparser.ConfigParser()

# Définition de la section par défaut
config["GENERAL"] = {
   "intervalle_verification": "45",
   "compression": "oui",
   "niveau_compression": "9",
   "transfert_x11": "oui"
}

# Ajout d'une section spécifique pour un hôte
config["serveur_distant"] = {
   "utilisateur": "admin"
}

# Ajout d'une autre section avec des configurations spécifiques
config["serveur_securise"] = {
   "port_hote": "50022",
   "transfert_x11": "non"
}

# Écriture du contenu dans un fichier INI
with open('config_exemple.ini', 'w') as fichier_config:
   config.write(fichier_config)
   

Le fichier config_exemple.ini généré aura le contenu suivant :


[GENERAL]
intervalle_verification = 45
compression = oui
niveau_compression = 9
transfert_x11 = oui

[serveur_distant]
utilisateur = admin

[serveur_securise]
port_hote = 50022
transfert_x11 = non
   

Opérations de base avec configparser

Une fois le fichier de configuration créé, vous pouvez lire et interroger son contenu.


import configparser

config = configparser.ConfigParser()

# Lecture du fichier de configuration
config.read('config_exemple.ini')

# Affichage des sections disponibles (excluant la section DEFAULT)
print(f"Sections : {config.sections()}") # Affiche : ['GENERAL', 'serveur_distant', 'serveur_securise']

# Vérification de l'existence d'une section
print(f"'serveur_distant' existe ? {'serveur_distant' in config}") # Affiche : True

# Accès aux valeurs :
# Via l'indexation directe
print(f"Utilisateur du serveur distant : {config['serveur_distant']['utilisateur']}") # Affiche : admin
print(f"Compression générale : {config['GENERAL']['compression']}") # Affiche : oui
print(f"Transfert X11 du serveur sécurisé : {config['serveur_securise']['transfert_x11']}") # Affiche : non

# Accès à une section entière
print(f"Section serveur_distant : {config['serveur_distant']}") # Affiche : <section: serveur_distant="">

# Itération sur les options d'une section (inclut les options de DEFAULT si non surchargées)
print("\nOptions de 'serveur_distant' :")
for cle in config['serveur_distant']:
   print(cle)
# Affiche :
# utilisateur
# intervalle_verification
# compression
# niveau_compression
# transfert_x11

# Affichage de toutes les options d'une section (y compris celles héritées de DEFAULT)
print(f"\nListe des options de 'serveur_distant' : {config.options('serveur_distant')}")
# Affiche : ['utilisateur', 'intervalle_verification', 'compression', 'niveau_compression', 'transfert_x11']

# Affichage des paires clé-valeur d'une section
print(f"\nItems de 'serveur_distant' : {config.items('serveur_distant')}")
# Affiche : [('intervalle_verification', '45'), ('compression', 'yes'), ('niveau_compression', '9'), ('transfert_x11', 'yes'), ('utilisateur', 'admin')]

# Obtention d'une valeur spécifique avec la méthode get()
print(f"\nObtenir la compression : {config.get('serveur_distant', 'compression')}") # Affiche : oui
   </section:>

Opérations avencées

Le module configparser permet également de modifier et de manipuler les fichiers de configuration existants.


import configparser

config = configparser.ConfigParser()
config.read('config_exemple.ini') # Lecture du fichier existant

# Ajout d'une nouvelle section
config.add_section('nouvelle_section')

# Suppression d'une section existante
config.remove_section('serveur_distant')

# Suppression d'une option spécifique dans une section
config.remove_option('serveur_securise', 'transfert_x11')

# Modification ou ajout d'une option dans une section
config.set('serveur_securise', 'nouvelle_option', 'valeur_test')
config.set('nouvelle_section', 'autre_cle', 'autre_valeur')

# Écriture des modifications dans un nouveau fichier
with open('config_modifiee.ini', 'w') as f:
   config.write(f)

# Note : Les modifications ne sont pas appliquées au fichier d'origine
# car il a été ouvert en mode lecture seule initialement.
   

Le nouveau fichier config_modifiee.ini contiendra les modifications :


[GENERAL]
intervalle_verification = 45
compression = oui
niveau_compression = 9
transfert_x11 = oui

[serveur_securise]
port_hote = 50022
nouvelle_option = valeur_test

[nouvelle_section]
autre_cle = autre_valeur
   

Étiquettes: ConfigParser Python gestion configuration format ini modules intégrés

Publié le 12 juillet à 00h41