Lire un fichier de configuration

Tagged:

Alors ça c'est pas nul du tout ... je voulais faire des scripts d'admin en Python, je me suis dit qu'a un moment ou a un autre j'allais avoir a faire a ces fichier .ini, .cfg, .conf ou autre qui sont tous organisés de la même manière ... Je me dis que j'ai un peu de boulot mais je pourrais me faire une classe me permettant d'ajouter, modifier supprimer, des sections comme des valeurs, ça prend pas des masses de temps ...

Que tu crois, je réfléchis 2 secondes et me dit que cette problématique je dois pas être le premier à la rencontrer ... petites recherches infructueuses sur google qui me renvoie vers des gens qui ont eu la même idée que moi et qui pensant être des programmeurs hors pair, on fait un truc si compliqué que ça en devient inutilisable ...

Puis au hazard je tapes python ConfigParser tumtumtum ... je tombe la dessus Magnifique ... Exactement ce que je cherchais !!

Comment ça marche ???

from ConfigParser import ConfigParser
 
config = ConfigParser()
smb = '/etc/samba/smb.conf'
 
config.read(smb)
config.add_section('MonPartage')
config.set('MonPartage','browseable','yes')
config.write(open(smb,'w'))

Alors petite choses a préciser... Mon éxemple n'est pas du tout complet pour ajouter un partage ;) puis le fichier de samba peut renvoyer une erreur au même titre que d'autres fichiers de config ... En effet le config parser n'aime pas du tout quand devant le nom il y a un espace :

 [maSection]
 truc = machin
     choz = bidul

donne :

 ConfigParser.ParsingError: File contains parsing errors: /home/lez/test.conf
       [line  3]: '    choz = bidul\n'

Je cherche comment pallier ce problème !!!

Comments

Voici d'autres modules python :
configObj 4.0 beta 5 www.voidspace.org.uk/pyth...

Dict4Ini wiki.woodpecker.org.cn/mo...
Ce module est très simple (un seul fichier) et très simple à utiliser.Il n'a pas le problème avec les espaces que tu as mentionné

J'espère que cela t'aidera

Cool va falloir que je teste tout ça :) peut être que j'aurais plus ce problème ;)

Merci pour les liens ;)

Cool, je cherchais quelques infos sur comment utiliser ce module.

Merci bien.

Je rajoute une chose, quand une valeur, dans le fichier de conf est vide ou avec un espace, la variable correspondante est considérée comme non définie par le config parser. :)

Salut, merci pour ce petit article, je suis retombé dessus par hasard et ça m'a servi ! Par contre j'ai un soucis avec ConfigParser, c'est qu'il ne conserve pas la casse de mes fichiers et ajoute des espaces autour des "=".

Une option qui était : "MonOption=1" devient ainsi "monoption = 1" une fois que j'ai écrit le fichier :/