3.8.18.6. Leçon sur la gestion des configurations avancées

Voir vacumm.misc.config, configObj (http://www.voidspace.org.uk/python/configobj.html), How to write a script.

Le but est de pouvoir gérer des fichiers de configuration plus évolués qu’avec ConfigParser :

  • Sections imbriquées.
  • Valeurs par défaut via le fichier de spécification.
  • Vérification des valeurs.
  • Accès comme un dictionnaire.

Le module vacumm.misc.config offre une interface pratique pour gérer ces configurations, et des outils pour les exploiter encore plus loin (ex: utilisation avec argparse).

Fichier courses_advanced_cfgm.py

#!/usr/bin/env python
# -*- coding: utf8 -*-
"""Gestion de configurations avancées"""

from vcmq import ConfigManager
from ConfigParser import SafeConfigParser


# Initialisation avec fichier de specifications
cfgm = ConfigManager('courses_advanced_cfgm.ini')


# Valeurs par défaut
print cfgm.defaults()                           # -> CHANGER LE .INI


# Chargement de sa configuration personnelle
cfg = cfgm.load('courses_advanced_cfgm.cfg')    # -> CHANGER LE .CFG
print cfg
print type(cfg)


# Modification
cfg['plot']['linewidth'] = 2.
print cfg


# -> AJOUTEZ UNE SOUS-SECTION AUX .INI ET .CFG


# Via ConfigParser
cfg2 = SafeConfigParser()
cfg2.read('courses_advanced_cfgm.cfg')
print cfg2 
print cfg2.get('plot', 'linewidth')
print cfg2.getfloat('plot', 'linewidth')

Fichier de spécifications courses_advanced_cfgm.ini

[logger]
level=option(debug,info,warning,error,default=debug)

[plot]
linewidth=float(min=0,default=1)

Fichier de configuration courses_advanced_cfgm.cfg

[plot]
linewidth=1.3