Nouvel opus de la série de de PHP à Python.
Aujourd’hui, Comment parcourir un fichier de configuration ini ?
Alors en intro, un truc bien cool pour tout à chacun : les fichiers ini se lisent aussi bien avec Python que PHP.
Zavez une appli avec un bon (gros) fichier de config au format ini ; pas de problème, vous allez voir ce que vous allez voir ;)
Pour illustrer ce billet j’ai pris un fichier de config de mon forum HaveFnuBB écrit en PHP que voici
Le bout de code PHP lisant mon fichier de config permet de connaitre les Réponses HTML possible, le code est le suivant :
de PHP …
<?php $config = parse_ini_file(dirname(__FILE__).'/havefnubb/var/config/defaultconfig.ini.php.dist',true); echo var_dump($config['jResponseHtml']); |
Ceci affichera les valeurs de mes variables définies dans ma section sus mentionnée
array(3) { ["minifyCSS"]=> string(1) "1" ["minifyJS"]=> string(0) "" ["minifyCheckCacheFiletime"]=> string(0) "" } |
… à Python
Pour le script python cela donnera
#!/usr/bin/python # -*- coding: utf-8 -*- import ConfigParser import os config = ConfigParser.ConfigParser() config.read(os.getcwd()+'/havefnubb/var/config/defaultconfig.ini.php.dist') print config.items('jResponseHtml') |
pour obtenir en résultat :
[('minifyjs', 'off'), ('minifycss', 'on'), ('minifycheckcachefiletime', 'off')] |
Pour l’oeil aguerri, vous aurez remarqué que 1 est devenu on et « » est devenu off pour python.
Le module ConfigParser ne se contente pas que de vous afficher le contenu d’une section (fort heureusement).
Avec celui-ci vous avez un accès direct à tous les paramètres avec une instruction get comme ceci :
#!/usr/bin/python # -*- coding: utf-8 -*- import ConfigParser import os config = ConfigParser.ConfigParser() config.read(os.getcwd()+'/havefnubb/var/config/defaultconfig.ini.php.dist') print config.get('jResponseHtml','minifyjs') |
vous affichera le « off » vu plus haut.
Outre l’accès direct, vous pouvez également pondre un fichier de config à la volée en commençant par ajouter la section puis les variables distinctes comme ceci :
import ConfigParser config = ConfigParser.RawConfigParser() config.add_section('Section1') config.set('Section1', 'an_int', '15') config.set('Section1', 'a_bool', 'true') config.set('Section1', 'a_float', '3.1415') config.set('Section1', 'baz', 'fun') config.set('Section1', 'bar', 'Python') config.set('Section1', 'foo', '%(bar)s is %(baz)s!') # Writing our configuration file to 'example.cfg' with open('example.cfg', 'wb') as configfile: config.write(configfile) |
Produira un fichier example.cfg:
[Section1] an_int=15 a_bool=true a_float=3.1415 baz=fun bar=Python foo=%(bar)s is %(baz)s! |
ici %(bar) et %(baz) seront remplacées par les valeurs de leur variable définie juste au dessus
Coté PHP on n’a rien d’équivalent… sauf au sein de(s) framework(s) PHP comme Jelix et sa méthode jIniFileModifier(‘fichier’)->getValue(‘variable’,'section’)
La prochaine partie traitera du traitement de la journalisation (les logs)
Tweeter