- A propos du module configparser
- Format du fichier de configuration
- Lecture de la valeur d'une option d'un fichier de configuration .ini en Python
- Mettre à jour un paramètre
- Lecture des sections d'un fichier de configuration
- Lire la liste des options avec la méthode options()
- Lecture totale avec la méthode items()
- Ajouter une section avec la méthode add_section()
- Liste des méthodes associées à la classe ConfigParser
1. A propos du module configparser
L’une des choses les plus importantes de l’univers du développement logiciel est le moyen efficace de gérer les paramètres de configuration pour maintenir un bon code et pouvoir le maintenir tout au long du cycle de vie du logiciel. Python configparser est une bibliothèque Python qui fournit une aide puissante aux développeurs pour lire et écrire des fichiers de configuration bien structurés et lisibles. Python configparser est un module intégré qui fait partie de la bibliothèque standard Python. Cette fiche d’information approfondie vous guidera développement logiciel dans un outil, configparser de python. C’est ce que nous apprendrons: configparser en python (comment créer, lire et modifier un fichier config.ini en python).
2. Format du fichier de configuration
Le format de fichier utilisé par le module configparser est similaire à celui utilisé par les anciennes versions de Microsoft Windows. Il se compose d'une ou de plusieurs sections nommées, chacune pouvant contenir des options avec des noms et des valeurs.
- Les sections de fichier de configuration: sont identifiées en recherchant les lignes commençant par [ et se terminant par ]. La valeur entre les crochets désigne le nom de la section et peut contenir tous les caractères sauf les crochets.
- Les options : sont répertoriées une par ligne dans une section. La ligne commence par le nom de l'option, qui est séparée de la valeur par un signe deux-points " : " ou un signe égale " = "
- Les commentaires : sont des lignes commençant par un point-virgule " ; " ou une dièse " # " et sont traitées comme des commentaires et ne sont pas visibles lors de l'accès par programme au contenu du fichier de configuration.
L'exemple suivant du fichier de configuration, comporte une section nommée settings avec trois options, host, username et password:
Exemple. configuration.ini
1 2 3 4 5 |
# paramètres de configuration du serveur [settings] host : 127.0.0.1 username : root password : root |
3. Lecture de la valeur d'une option d'un fichier de configuration .ini en Python
Avec le langage Python on peut se servir du module configparser et la méthode read() de l'objet ConfigParser pour lire le fichier de configuration:
Exemple. Lecture du fichier configuration.ini en Python
1 2 3 4 5 6 |
from configparser import ConfigParser parser = ConfigParser() parser.read('configuration.ini') # Affichage de la valeur du paramètre 'host' print(parser.get('settings', 'host')) |
4. Mettre à jour un paramètre
Pour mettre à jour un paramètre du fichier de configuration, on doit préalablement l'ouvrir en mode lecture et écriture et utiliser ensuite la méthode set() de la classe ConfigParser
Exemple. mettre à jour la valeur du paramètre 'host'
1 2 3 4 5 6 7 8 9 10 11 |
from configparser import ConfigParser parser = ConfigParser() parser.read('configuration.ini') # Ouverture du fichier de configuration en mode lecture et écriture file = open('configuration.ini','r+') # mettre à jours la valeur du paramètre 'host' parser.set('settings', 'host',"'localhost'") parser.write(file) file.close() |
Maintenant si vous ouvrez le fichier configuration.ini, vous allez constater que le paramètre host = 127.0.0.1 est devenu host = localhost
5. Lecture des sections d'un fichier de configuration
La méthode sections() de l'objet parser, permet de récupérer les sections du fichier de configuration sous forme d'une liste :
Exemple. configuration.ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[settings] # paramètres de configuration du serveur host : 127.0.0.1 username : root password : root [Safe_Mode] # http://php.net/safe-mode safe_mode = Off safe_mode_gid = on [File_Uploads] # http://php.net/file-uploads file_uploads = On upload_tmp_dir = "c:/wamp/tmp" upload_max_filesize = 2M |
Exemple. lecture des sections du fichier configuration.ini
1 2 3 4 5 |
from configparser import ConfigParser parser = ConfigParser() parser.read('configuration.ini') sec = parser.sections() print(sec) # Affiche : ['settings', 'Safe_Mode', 'File_Uploads'] |
6. Lire la liste des options avec la méthode options()
La méthode options() de l'objet ConfigParser, permet de récupérer la liste des options d'une section du fichier de configurations:
Exemple. Liste des options de la première section:
1 2 3 4 5 6 7 8 |
from configparser import ConfigParser parser = ConfigParser() parser.read('configuration.ini') # pointer vers la première section sec = parser.sections()[0] # obtenir la liste des options print(sec, parser.options(sec)) # Affiche: settings ['host', 'username', 'password'] |
Et en utilisant la boucle for, on peut obtenir toutes les sections avec leurs options:
Exemple. Liste de toutes les sections avec leurs options:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from configparser import ConfigParser parser = ConfigParser() parser.read('configuration.ini') # Parcourt de toutes les sections for sec in parser.sections(): # parcourt des options des différentes sections print(sec, " : " , parser.options(sec)) """Ce qui affiche à l'exécution : settings : ['host', 'username', 'password'] Safe_Mode : ['safe_mode', 'safe_mode_gid'] File_Uploads : ['file_uploads', 'upload_tmp_dir', 'upload_max_filesize'] """ |
7. Lecture totale avec la méthode items()
La méthode items(), permet de récupérer les noms des paramètres à avec leurs valeurs:
Exemple. récupération des paramètres et valeurs de la premières section
1 2 3 4 5 6 7 8 9 |
from configparser import ConfigParser parser = ConfigParser() parser.read('configuration.ini') # Pointer vers la première section sec = parser.sections()[0] print(sec, " : ") for name, value in parser.items(sec): print(' {} = {}'.format(name, value)) |
Affichage complet des sections avec leurs paramètres et valeurs:
1 2 3 4 5 6 7 8 9 10 |
from configparser import ConfigParser parser = ConfigParser() parser.read('configuration.ini') # Parcourt des sections for sec in parser.sections(): print(sec," : ") # parcourt des paramètres et valeurs for name, value in parser.items(sec): print(' {} = {}'.format(name, value)) |
Ce qui affiche après exécution:
1 2 3 4 5 6 7 8 9 10 11 |
settings : host = 127.0.0.1 username = root password = root Safe_Mode : safe_mode = Off safe_mode_gid = on File_Uploads : file_uploads = On upload_tmp_dir = "c:/wamp/tmp" upload_max_filesize = 2M |
8. Ajouter une section avec la méthode add_section()
Avec la méthode add_section() de la classe ConfigParser, on peut ajouter autant de sections qu'on souhaite, pour cela on doit préalablement ouvrir le fichier de configuration en mode lecture et écriture et utiliser ensuite la méthode set() de la classe ConfigParser afin de pouvoir définir et ajouter de nouvelles options à la section.
Exemple. Ajout d'une section nommée mysqld
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from configparser import ConfigParser parser = ConfigParser() parser.read('configuration.ini') # Ouverture du fichier de configuration file = open('configuration.ini','r+') # Ajout d'une nouvelle section mysqld parser.add_section('mysqld') # Définition et ajout de nouvelles options parser.set('mysqld', 'port', '3306') parser.set('mysqld', 'table_cache','64') parser.write(file) file.close() |
Après exécution du code, vous verrez une nouvelle section [mysqld] qui s'ajoute au fichier configuration.ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[settings] host = 127.0.0.1 username = root password = root [Safe_Mode] safe_mode = Off safe_mode_gid = on [File_Uploads] file_uploads = On upload_tmp_dir = "c:/wamp/tmp" upload_max_filesize = 2M [mysqld] port = 3306 table_cache = 64 e_uploads = On upload_tmp_dir = "c:/wamp/tmp" upload_max_filesize = 2M |
9. Liste des méthodes associées à la classe ConfigParser
La classe ConfigParser est dotée de nombreuses méthodes permettant d'améliorer l'expérience utilisateur. En voici la liste des méthodes de la classe ConfigParser de Python, avec une description pour chacune:
- add_section(section) : permet d'ajouter une nouvelle section dans le fichier de configuration. Lève une erreur si la section existe déjà.
- clear() : supprime toutes les sections, options et valeurs du parser, le réinitialisant complètement.
- defaults() : retourne un dictionnaire contenant les options par défaut définies dans le parser.
- get(section, option) : récupère la valeur d'une option dans une section donnée, sous forme de chaîne de caractères.
- getboolean(section, option) : retourne la valeur d'une option interprétée comme un booléen (true, yes, on, 1 → True).
- getfloat(section, option) : retourne la valeur d'une option convertie en nombre à virgule flottante (float).
- getint(section, option) : retourne la valeur d'une option convertie en entier (int).
- has_option(section, option) : renvoie True si l'option existe dans la section donnée.
- has_section(section) : renvoie True si la section existe dans le fichier de configuration.
- items(section) : retourne une liste de tuples (option, valeur) pour toutes les options de la section donnée.
- keys() : retourne les clés (noms des sections), similaire à sections() mais au format de dictionnaire.
- options(section) : retourne la liste des options disponibles dans une section spécifique.
- optionxform(option) : méthode utilisée pour transformer les noms d’options (par défaut, les transforme en minuscules). Peut être redéfinie.
- pop(section) : supprime une section du parser et renvoie son contenu sous forme de dictionnaire.
- popitem() : supprime et renvoie une paire section/contenu du parser (comme un dictionnaire).
- read(filenames) : lit un ou plusieurs fichiers de configuration depuis le système de fichiers (chemin ou liste de chemins).
- read_dict(dictionary) : lit une structure de type dictionnaire Python pour initialiser les sections et options.
- read_file(file_object) : lit un fichier de configuration depuis un objet fichier (ex. : un open() déjà ouvert).
- read_string(string) : lit les données de configuration directement depuis une chaîne de caractères formatée.
- readfp(fp) : méthode obsolète, utilisée avant Python 3.2 pour lire à partir d’un objet fichier. Supprimée en Python 3.8.
- remove_option(section, option) : supprime une option spécifique d’une section donnée.
- remove_section(section) : supprime entièrement une section du parser.
- sections() : retourne une liste de toutes les sections présentes dans le fichier de configuration.
- set(section, option, value) : définit ou modifie la valeur d'une option dans une section donnée.
- setdefault(key, default) : similaire à celle des dictionnaires Python, insère une nouvelle clé avec une valeur par défaut si elle n’existe pas.
- update(other) : met à jour le contenu du parser avec un autre dictionnaire ou parser contenant des sections et options.
- values() : retourne toutes les valeurs de toutes les sections (sans les noms d’options), comme un dictionnaire.
- write(file_object) : écrit le contenu du parser dans un objet fichier (souvent utilisé pour enregistrer les modifications dans un fichier .ini).
Younes Derfoufi
CRMEF OUJDA