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