IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Affichage des résultats du sondage: Quelle solution choisir?

Votants
3. Vous ne pouvez pas participer à ce sondage.
  • La première citée

    1 33,33%
  • La deuxième citée

    0 0%
  • La troisième citée, mais alors je dis comment

    2 66,67%
Sondage à choix multiple
Python Discussion :

Comment feriez-vous un fichier de configuration?


Sujet :

Python

  1. #1
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Par défaut Comment feriez-vous un fichier de configuration?
    Bonjour,
    Comme beaucoup d'entre vous je suppose, j'ai une classe principale A et de nombreuses classes secondaires [B1 ... Bn] dans des fichiers séparés. Je souhaite maintenant définir un fichier de configuration modifiable par l'utilisateur contenant par exemple les valeurs par défaut ou le chemin vers un programme externe. Comment faire pour faire bien? J'ai pensé à
    1- Lire le fichier et extraire les variables utiles dans chacune des classes Bi (me semble lourd)
    2- Lire le fichier dans la classe principale A, puis mettre le tout dans une liste et importer la liste dans chacune des classes Bi (me semble rigide et dangereux si le codage du fichier de départ doit être modifié)

    Dans l'idéal, il faudrait que la lecture du fichier définisse des variables globales, c'est-à-dire définies une fois dans la classe principale A et qui peuvent être utilisées sans définition ni transfert en argument dans les classes Bi. Mais celà est-il possible?

    J'attends votre opinion. Merci.

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Peut être comme dans Django, un fichier settings.py contenant tes variables, exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    LANG = 'fr'
    RESOLUTION = (1024, 768)
    # c'est n'importe quoi
    COLOR  = "#f00"
    #oui
    #je sais...
    et dans tes autres fichiers:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import settings
     
    lang = settings.LANG

  3. #3
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Par défaut
    Oui c'est une idée, merci. Je pourrais même grouper dans settings toutes les valeurs dont j'ai besoin dans une classe Bi en une liste.

    Une ligne de code en plus par classe, c'est acceptable!

  4. #4
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Si tu utilises un module python comme fichier de configuration et qu'il est destiné à être modifié directement par l'utilisateur, il te sera nécessaire de tester l'import:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try:
        import settings
    except SyntaxError:
        recreer_le_fichier_de_conf()
    except ImportError:
        ....
    Surtout si tu attends de l'utilisateur qu'il respecte la bonne syntaxe pour les listes...

  5. #5
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Par défaut
    Merci pour ces précisions. Le fichier de config sera effectivement écrit en lisant des données entrées dans des Entries tkinter par l'utilisateur. Faire en sorte que les données qu'ils y entrent soient correctes reste toujours long à gérer pour le programmateur...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 328
    Par défaut
    Bonjour,

    Et un fichier SHELVE ?

  7. #7
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Par défaut
    Je ne connaissais pas ce type d'objet. Il a l'ai intéressant: je vais l'essayer.

  8. #8
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Pour gérer un fichier de configuration, regarde aussi du côté du module "ConfigParser". Il permet de gérer un fichier texte du même genre que les fichiers .ini de Windows.

    Voir ici: http://python.developpez.com/faq/?page=ConfigParser

  9. #9
    Membre actif
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Par défaut
    Tu crée un fichier xml qui contient ta config, ce fichier xml est lu par une classe qui "retourne" un dico de tes parametres.

  10. #10
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 64
    Par défaut
    Tu n'aurais pas un exemple simple sur lequel je pourrais m'inspirer: je ne connais pas l'xml.

  11. #11
    Membre confirmé Avatar de corwin
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 85
    Par défaut
    Je vote aussi pour le xml si les parametres sont nombreux et subsceptible de changer.

    Surtout que tu peux lui ajouter une DTD pour blinder le format pour qu'il soit conforme à une syntaxe donnée. DTD == Document Type Definition
    Il y a des lib en python pour parser du XML.

    Sinon pour quelques parametre de conf ce n'est peut etre pas obligé de sortie l'artillerie lourde XML et les solutions "ini file" et "settings" sont bonne mais comme dit précédament il faudra blinder ton code de test.

    Pour le XML tu peux jetter un oeil sur les forum XML de developpez.com.

    Au niveau conception je ferais comme ca
    Classe(s)Cliente(s)<=>ClasseConfigManager<=>ParserXML or ParserINI or Settings
    la classe config manager servant d interface au cliente et utilise le parser de ton choix. Si tu en as plusieur chaque parser héritera d'un parsergenerique.

    http://pyxml.sourceforge.net/topics/

    a toi de voir selon ton besoin

  12. #12
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    Je vote également pour la création d'un fichier .py, mais plûtot que de laisser l'utilisateur l'éditer directement, passer par une fenêtre de configuration (ce qui revient au même...), ainsi une fois les données rentrées par l'utilisateur, analysées et considérées comme valides ou non, le programme principal réécrit le fichier settings.py et définit également les nouvelles valeurs des variables/paramètres

Discussions similaires

  1. Comment feriez-vous un éditeur texte avec metadonnées
    Par slanbuas dans le forum Général Java
    Réponses: 1
    Dernier message: 07/07/2008, 00h25
  2. Comment feriez-vous? conception d' une base de données.
    Par Patrick25300 dans le forum Schéma
    Réponses: 4
    Dernier message: 05/05/2008, 18h41
  3. [SQL] Comment feriez-vous cette requête pour une recherche ?
    Par Core8 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/02/2008, 11h58
  4. [D7] Comment feriez-vous une messagerie instantanée façon MSN ?
    Par ero-sennin dans le forum Web & réseau
    Réponses: 37
    Dernier message: 09/08/2007, 20h53
  5. [Debug] Comment feriez-vous ?
    Par mandaillou dans le forum C++
    Réponses: 4
    Dernier message: 21/03/2007, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo