Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Analyse fichiers .conf (avec py, sans lex ni yacc) ??

8 réponses
Avatar
kato fong
Bonjour à tous,

Voulant améliorer une application python en évitant de la configurer à
l'aide de vi à chaque lancement, je recherche comment faire un fichier
de config facilement lisible, éditable et analysable en python.

Avez-vous des exemples, des pointeurs ?

D'avance merci

--
kato fong

8 réponses

Avatar
kato fong

Voulant améliorer une application python en évitant de la configurer à
l'aide de vi à chaque lancement, je recherche comment faire un fichier
de config facilement lisible, éditable et analysable en python.


là, j'ai trouvé : http://docs.python.org/lib/module-ConfigParser.html

--
kato fong

Avatar
Encolpe Degoute
Bonjour à tous,

Voulant améliorer une application python en évitant de la configurer à
l'aide de vi à chaque lancement, je recherche comment faire un fichier
de config facilement lisible, éditable et analysable en python.


Format INI avec ConfigParser =>
http://docs.python.org/lib/module-ConfigParser.html

Format XML avec plein de bibliothèques


--
Encolpe DEGOUTE
http://encolpe.degoute.free.fr/
Logiciels libres, hockey sur glace et autres activités cérébrales

Avatar
Laurent Pointal
Le Tue, 10 Jun 2008 17:30:36 +0200, Encolpe Degoute a écrit :

Bonjour à tous,

Voulant améliorer une application python en évitant de la configurer à
l'aide de vi à chaque lancement, je recherche comment faire un fichier
de config facilement lisible, éditable et analysable en python.


Format INI avec ConfigParser =>
http://docs.python.org/lib/module-ConfigParser.html


Ou plus évolué, ConfigObj
http://www.voidspace.org.uk/python/configobj.html


Format XML avec plein de bibliothèques
L'auteur du post a écrit "facilement lisible" ;-)

Bon, si ça n'est QUE par le logiciel, ça va.
Si ça doit être lu/modifié par des humains, c'est pas sympa.


+ Format JSON et binding Python
http://www.json.org/


+ Format YAML et binding Python
http://www.yaml.org/


+ Simple module Python avec des définitions de variables.

--
Laurent POINTAL -


Avatar
JBB
Bonjour à tous,

Voulant améliorer une application python en évitant de la configurer à
l'aide de vi à chaque lancement, je recherche comment faire un fichier
de config facilement lisible, éditable et analysable en python.

Avez-vous des exemples, des pointeurs ?

D'avance merci

Moi personnellement depuis que je fais du python je ne fais plus de fichier de conf!

Ou plutôt mon fichier de conf est un fichier python que j'appelle conf.py,
dans lequel je met des choses du genre:

#parametres trucs
PARAM1 = "toto"
PARAM2 = 5*12
#parametres machins
VITESSE_PAR_DEFAUT = 10/3.6 #10km/h en m/s
FICHIER = PARAM1 + ".tot"


dans mon code je met import conf.py
et j'ai tous les paramètres de conf.
le parser de mon fichier de conf est python.exe ;)

en plus je peut du code dans mon fichier de conf


rajouter un nouveau paramètre de conf prends environ 2 secondes.

après on peut renforcer le système, en créant une class Parametre
on peut alors vérifier que tous les paramètres ont bien été saisis, ou que l'utilisateur n'en a pas saisi d'autre.
le fichier de conf de vient:
PARAM = Parametre()
PARAM.param1 = "toto"
PARAM.param3 = "toto" #ce parametre n'existe pas -> exception

bref on fait ce qu'on veut.

Avatar
kato fong
Moi personnellement depuis que je fais du python je ne fais plus de
fichier de conf!
Ou plutôt mon fichier de conf est un fichier python que j'appelle conf.py,
<snip/>

dans mon code je met import conf.py
et j'ai tous les paramètres de conf.
le parser de mon fichier de conf est python.exe ;)


Oui, je comprends bien. Toutefois, dans le cas qui me préoccupe, j'ai
deux menues objections:

1 - le fichier config peut être modifié par un admin/technicien qui
ignore tout de python (ou qui trouve ça nul parce que perl-est-super
(j'en ai déjà rencontré un))

2 - les fichiers config peuvent se trouver sous diverses versions et,
surtout, sous divers chemins d'accès. ce qui me conduit à passer le nom
du fichier de config en paramètre de l'appli.
Donc, dans ce dernier cas je ne sais pas comment faire proprement pour
passer "dynamiquement" le nom du module conf.py. J'imagine qu'il
faudrait juste que je passe un peu de temps à chercher ...

--
kato fong

Avatar
NicolasP
2 - les fichiers config peuvent se trouver sous diverses versions et,
surtout, sous divers chemins d'accès. ce qui me conduit à passer le nom
du fichier de config en paramètre de l'appli.
Donc, dans ce dernier cas je ne sais pas comment faire proprement pour
passer "dynamiquement" le nom du module conf.py. J'imagine qu'il
faudrait juste que je passe un peu de temps à chercher ...



Ajouter le path du fichier de config à sys.path et importer le module :

import sys
sys.path.append(pathDuModuleAImporter)
import Module

Nicolas

Avatar
JBB
Moi personnellement depuis que je fais du python je ne fais plus de
fichier de conf!
Ou plutôt mon fichier de conf est un fichier python que j'appelle
conf.py,
<snip/>

dans mon code je met import conf.py
et j'ai tous les paramètres de conf.
le parser de mon fichier de conf est python.exe ;)


Oui, je comprends bien. Toutefois, dans le cas qui me préoccupe, j'ai
deux menues objections:

1 - le fichier config peut être modifié par un admin/technicien qui
ignore tout de python (ou qui trouve ça nul parce que perl-est-super
(j'en ai déjà rencontré un))


si on se contente de chose genre
PARAM1 = "toto"
PARAM2 = 5.0

pas vraiment besoin de connaitre le python, c'est pas plus compliqué que la syntaxe d'un .ini standard


2 - les fichiers config peuvent se trouver sous diverses versions et,
surtout, sous divers chemins d'accès. ce qui me conduit à passer le nom
du fichier de config en paramètre de l'appli.
Donc, dans ce dernier cas je ne sais pas comment faire proprement pour
passer "dynamiquement" le nom du module conf.py. J'imagine qu'il
faudrait juste que je passe un peu de temps à chercher ...




Avatar
Laurent Pointal
Le Thu, 12 Jun 2008 12:25:37 +0200, JBB a écrit :

Moi personnellement depuis que je fais du python je ne fais plus de
fichier de conf! Ou plutôt mon fichier de conf est un fichier python que
j'appelle conf.py, dans lequel je met des choses du genre:


<zip>

dans mon code je met import conf.py
et j'ai tous les paramètres de conf. le parser de mon fichier de conf
est python.exe ;)


<zip>

bref on fait ce qu'on veut.



Je joue aussi à ça de temps en temps, c'est bien pratique.

Par contre, ça a deux limites:

1) la sécurité

En effet, un utilisateur peut mettre *ce qu'il veut* dans le fichier de
configuration, ça sera exécuté par Python avec les droits de
l'utilisateur qui lance l'application concernée.


2) ça oblige à avoir une syntaxe Python clean

Par exemple, pas possible de définir une chaîne de caractères:

EMAIL =
WEBHOST = mamachine.qui.tue.org
USERNAME = Truc Bidule De Naji Bosca

Pour quelque chose de puissant, facile à utiliser pour la rédaction des
fichiers de config, et un peu plus sécurisé, je conseille vraiment
configobj: http://www.voidspace.org.uk/python/configobj.html

Le format des fichiers de config:
http://www.voidspace.org.uk/python/configobj.html#config-files
http://www.voidspace.org.uk/python/configobj.html#the-config-file-format

A+

Laurent.


--
Laurent POINTAL -