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

bibliotheque pour faire des "fichiers config"

7 réponses
Avatar
Windoz
Bonjour,

Je voudrais savoir s'il existe un algorithme ou une bibliothèque
existante qui permettrait de lire et d'écrire dans un fichier ou l'on
stockerait tt les paramètres à retenir sous la forme par exemple:

param1= XXX
param2= XXX
...

De sorte que cela soit facile à modifier à la main si besoin en est.

Merci

7 réponses

Avatar
News M Claveau /Hamster-P
Bonsoir !

J'avais le même pb ; puis, après réflexion, j'ai fini par utiliser, tout
simplement, un fichier "config.py" ; un simple script Python !

Bonne @nnée
--
Michel Claveau
Avatar
F. Petitjean
Bonsoir !

J'avais le même pb ; puis, après réflexion, j'ai fini par utiliser, tout
simplement, un fichier "config.py" ; un simple script Python !
J'ai vu, je ne sais plus dans quel logiciel, l'astuce suivante :

le module config contient et définit un dictionnaire nommé « py »
py = dict(param1="valeur1", note='Ne pas oublier le pain' )
Depuis un autre module
import config
print config.py['note']
nombre = config.py.get('nombre', 20)
etc

Bonne @nnée
et bonne santé


Avatar
Wilk
Windoz writes:

Bonjour,

Je voudrais savoir s'il existe un algorithme ou une bibliothèque
existante qui permettrait de lire et d'écrire dans un fichier ou l'on
stockerait tt les paramètres à retenir sous la forme par exemple:

param1= XXX
param2= XXX
...

De sorte que cela soit facile à modifier à la main si besoin en est.


Tu peux utiliser le module ConfigParser par ex. Y a un truc sympa aussi
pour ça c'est yaml.

--
William - http://flibuste.net

Avatar
News M Claveau /Hamster-P
Bonjour !

C'est aussi une idée. Mais, tant qu'à utiliser un dictionnaire, on pourrais
très bien faire :
config = dict(param1="valeur1", note='Ne pas oublier le pain' )
dans un fichiers quelconque ("BA.2005" par exemple). Ou, plus lisible, AMHA
:
config = {}
config['param1']='valeur1'
config['note']='Ne pas oublier le pain'


Dans le logiciel, il suffit de faire :
execfile("BA.2005",globals(),globals())
pour avoir le dictionnaire sous la main ; et faire :
print config['note']
Avatar
F. Petitjean
Bonjour !

C'est aussi une idée. Mais, tant qu'à utiliser un dictionnaire, on pourrais
très bien faire :
config = dict(param1="valeur1", note='Ne pas oublier le pain' )
dans un fichiers quelconque ("BA.2005" par exemple). Ou, plus lisible, AMHA
:
config = {}
config['param1']='valeur1'
config['note']='Ne pas oublier le pain'
Fondamentalement la même chose, il me semble que nous sommes d'accord.



Dans le logiciel, il suffit de faire :
execfile("BA.2005",globals(),globals())
Aïe aïe ouille. Simplement à cause du nom du fichier !

pour avoir le dictionnaire sous la main ; et faire :
print config['note']

On ne vous a jamais dit qu'il vaut mieux éviter :

les globaux
les instructions du genre execfile() ou eval() ?
s/BA.2005/BA_2005.py/
et from BA_2005 import config
ou bien
annee = "%s" % (2005,)
cfg = __import__("BA_%s" % (annee,))
print cfg.config['note']
ou faire help(__import__) et voir les autres paramètres.

--

Ce qui se conçoit bien s'énonce clairement
Et les mots pour le dire viennent aisément.
Boileau Despréaux.

Avatar
Didier FRAISSE
Bonjour,

Je voudrais savoir s'il existe un algorithme ou une bibliothèque
existante qui permettrait de lire et d'écrire dans un fichier ou l'on
stockerait tt les paramètres à retenir sous la forme par exemple:

param1= XXX
param2= XXX
....

De sorte que cela soit facile à modifier à la main si besoin en est.

Merci


Bonjour

Pourquoi ne pas utiliser ConfigParser ?

import os,ConfigParser

# Charge le fichier de configuration
configFile = 'ScanTrtAuto.cfg'
config = ConfigParser.ConfigParser()
config.readfp(open(os.path.abspath(configFile)))
param1 = config.get('param','param1')
param2 = config.get('param','param2')

et pour le fichier de config

[param]
param1 = 1
param2 = c'est un paramètre

[system]
.....

etc

Bonne année
Didier

Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonsoir !


Les exec, j'en utilise énormément. Cela me permet d'exécuter des scripts
redéfinissables durant l'exécution, et associés à des objets de pages HTML,
ou de fiches de saisies.
On peut simuler des "import" via XML-RPC, web-services, FTP, HTTP, ou via
des fichiers compressés et protégés par un mot de passe.
Cela me permet d'embarquer des scripts Python dans différents
logiciels/langages comme Word, Excel, ou javascript.
Je peux aussi réaliser des sérialisations codes/données difficilement
réalisables autrement.
Etc. etc.

A mon avis, il y a moins de problèmes à utiliser exec, qu'à faire des "from
xxx import *"

Pour les globals(), c'est souvent considéré comme un aspect améliorant exec
(voir "Python en concentré").


Exec, c'est un des aspects dynamiques de Python que je trouve des plus
pratiques. Et j'espère que cela continuera longtemps encore.



Si l'on se rapporte au cas cité, il n'y a aucune différence fonctionnelle
entre "import" et "execfile". Il s'agit simplement de choisir si l'on veut,
ou non, préfixer la dictionnaire avec le nom du module.


Bonne soirée
--
Michel Claveau