Le module ConfigParser permet facilement de gérer un fichier de configuration du même genre que les fichiers “.ini” de Windows.
Par exemple:
[Section1] cle11 = valeur11 cle12 = valeur12 cle13 = valeur13 cle14 = 100 cle15 = 1.123654789 cle16 = True [Section2] cle21 = valeur21 cle22 = valeur22
Il suffit d'importer le module pour disposer de toutes ses fonctionnalités:
import ConfigParser
Pour créer le fichier de configuration en mémoire:
cfg = ConfigParser.ConfigParser()
Pour ajouter une section:
S = 'Section1' cfg.add_section(S) S = 'Section2' cfg.add_section(S)
Ou plus simplement:
cfg.add_section('Section1') cfg.add_section('Section2')
Pour ajouter des options:
S = 'Section1' cfg.set(S, 'cle11', 'valeur11') cfg.set(S, 'cle12', 'valeur12') cfg.set(S, 'cle13', 'valeur13') cfg.set(S, 'cle14', 100) cfg.set(S, 'cle15', 1.123654789) cfg.set(S, 'cle16', True) S = 'Section2' cfg.set(S, 'cle21', 'valeur21') cfg.set(S, 'cle22', 'valeur22')
NB: qu'on écrive la valeur numérique 100 ou la valeur chaîne '100', elle sera stockée sous forme de chaîne de caractères dans le fichier disque!
Quelque chose de surprenant: la valeur d'une option peut être une chaîne de caractères multiligne! Il suffit de la stocker avec les triples guillemets (ou triples apostrophes). Elle sera stockée en multiligne aussi dans le fichier sur disque.
Exemple:
M=""" hivghrfivnirdlsm nhisvnhgidnvgid vnghrfivnghinvg """ cfg.set('Section1', 'cle12', M)
Image du fichier stocké sur disque:
[Section1] cle11 = valeur11 cle12 = hivghrfivnirdlsm nhisvnhgidnvgid vnghrfivnghinvg cle13 = valeur13 ... ...
Ecrire le fichier de configuration sur disque:
cfg.write(open('ficherdeconfig.cfg','w'))
A l'occasion d'une session suivante, charger le fichier de configuration
cfg = ConfigParser.ConfigParser() cfg.read('ficherdeconfig.cfg')
Lire la valeur de l'option 'clé22' de la section 'Section2'
X = cfg.get('Section2', 'cle22') print X # affiche: 'valeur22'
Modifier la valeur de cette option
cfg.set('Section2', 'cle22', 'valeur22_modif')
Lire les valeurs non-chaîne en les convertissant directement dans le bon type:
Z=cfg.getint('Section1', 'cle14') print Z, type(Z) # affiche: 100 <type 'int'> Z=cfg.getfloat('Section1', 'cle15') print Z, type(Z) # affiche: 1.123654789 <type 'float'> Z=cfg.getboolean('Section1', 'cle16') print Z, type(Z) # affiche: True <type 'bool'>
Lister toutes les sections disponibles:
print cfg.sections() # affiche: ['Section2', 'Section1']
Lister toutes les options disponibles de la section 'Section1'
print cfg.options('Section1') # affiche: ['cle11', 'cle12', 'cle13', 'cle14', 'cle15', 'cle16']
Lister tous les couples clé-valeur de la section 'Section1':
print cfg.items('Section1') # affiche: [('cle11', 'valeur11'), ('cle12', 'valeur12'), ('cle13', 'valeur13'), ('cle14', '100'), ('cle15', '1.123654789'), ('cle16', 'True')]
Effacer l'option 'cle12' de la section 'Section1'
cfg.remove_option('Section1','cle12')
Effacer la section 'Section2' (et toutes ses options)
cfg.remove_section('Section2')
Et, bien sûr, n'oubliez pas de ré-écrire le fichier sur disque après toutes ces modifications!
cfg.write(open('ficherdeconfig.cfg','w'))