2010-06-16 8 views
3

Je souhaite utiliser Python pour créer un générateur de fichiers de configuration. Mon idée approximative est d'alimenter l'entrée avec des fichiers modèles et certains fichiers XML avec les paramètres réels. Ensuite, utilisez le programme pour générer les vrais fichiers de configuration.Générateur de fichier de configuration Python

Exemple:

[template file] 
server_IP = %serverip% 
server_name = %servername% 


[XML file] 
<serverinfo> 
<server ip="x.x.x.x" name="host1" /> 
<server ip="x.x.x.x" name="host2" /> 
</serverinfo> 

puis obtenir le fichier de configuration de sortie comme celui-ci

[server.ini] 

[server1] 
server_IP = x.x.x.x 
server_name = host1 

[server2] 
server_IP = x.x.x.x 
server_name = host2 

J'ai plusieurs questions:

  • est-il un programme générateur de configuration open source? (Quel pourrait être le mot-clé), je me demande s'il y a quelque chose peut être ajouté/modifié dans la conception.

  • Est-ce que Python a un bon module d'analyseur XML?

  • Est-ce une bonne idée d'utiliser un fichier XML pour enregistrer les paramètres d'origine? J'ai pensé à utiliser Excel car il est plus intuitif à maintenir, mais plus difficile à analyser pour le programme. Je ne sais pas comment les gens traitent cela.

Espérons que la communauté peut me donner quelques suggestions. Merci beaucoup!

EDIT: Dans le scénario qu'il existe des dizaines de ces fichiers ini de sortie. Je parle de 2 choses.

  1. il y a des dizaines d'IP/nom d'hôte et des informations connexes, qui peut nécessiter un être géré par des humains, de sorte que le format XML serait un peu gênant. Quelle pourrait être la structure la plus pratique pour gérer ces informations? (Excel serait un outil pratique pour modifier et rechercher des informations par lots)

  2. En cas de besoin d'ajouter une ligne supplémentaire dans les fichiers ini, j'ai besoin d'un moyen efficace en modifiant simplement le fichier modèle et ajouter des informations supplémentaires dans le fichier. fichier source (peut être le fichier Excel ou autre), puis des paquets entiers de fichiers ini peuvent être générés rapidement.

Répondre

3

Je recommande d'utiliser l'excellente bibliothèque ConfigObj de Michael Foord. Il peut lire/écrire des fichiers de configuration, même avec des sections imbriquées.

1

Il est formidable d'utiliser xml pour n'importe quel fichier de configuration. Le meilleur choix dans n'importe quel langage interprété est d'utiliser un fichier de code et simplement de l'exec ou de l'importer. Le cornichon est également bon, mais pas humainement lisible.

1

J'ai utilisé le module minidom. Cela fonctionnerait probablement pour vous.

3

Je ne sais pas s'il existe des générateurs de configuration open source.

Python a several modules d'analyseur xml, le plus récent (et peut-être le plus pythonique) dont ElementTree. Vous pouvez trouver une documentation supplémentaire pour cela au developer's site.

Je recommande d'éviter xml dans vos fichiers de configuration si possible. Un simple fichier plat plein de paires nom/valeur est beaucoup plus facile à utiliser pour les humains. Si vous avez besoin d'un niveau ou deux de structure, les fichiers de style ini devraient faire bien, et python est livré avec un built-in parser pour eux.

+0

Merci pour la suggestion. Mais j'ai besoin de générer des dizaines de fichiers ini mentionnés dans ma question. Je voudrais avoir l'ini save comme modèle. Et ma vraie question est de savoir comment sauvegarder ces dizaines d'informations? Quel type de structure serait le plus pratique pour l'homme pour gérer la configuration, mais aussi plus facile à générer une fois qu'il y a une modification qui doit s'appliquer sur tous les fichiers ini. S'il vous plaît voir ma question révisée. Merci. – Stan

+0

Pour clarifier, je suggère que vous utilisiez un fichier texte plat/valeur ou un fichier ini comme fichier * source *, et que vous utilisiez les dizaines de données qui s'y trouvent pour remplir vos fichiers modèles. –

1

Vous avez besoin de moteur de gabarit, regardez string.Template

+0

vous devriez éviter de générer du code XML par concaténation de chaînes, car vous pouvez facilement rencontrer des problèmes d'encodage. après tout, vous avez généré un énorme fichier XML et je ne peux pas l'analyser parce que l'encodage est cassé - est arrivé plus d'une fois pour moi ... puisque je n'utilise que xml.minidom – martyglaubitz