J'ai un script de ligne de commande que j'exécute avec beaucoup d'arguments. J'en suis maintenant arrivé à un point où j'ai trop d'arguments et je veux aussi avoir des arguments sous forme de dictionnaire.
Donc, pour simplifier les choses, je voudrais plutôt exécuter le script avec un fichier de paramètres. Je ne sais pas vraiment quelles bibliothèques utiliser pour l'analyse du fichier. Quelle est la meilleure pratique pour ce faire? Je pourrais bien sûr marteler quelque chose moi-même, mais s'il y a une bibliothèque pour cela, je suis tout à fait à l'écoute.
Quelques «demandes»:
- Plutôt que d'utiliser,
pickle
je voudrais que ce soit un fichier texte simple qui puisse être facilement lu et édité. - Je veux pouvoir y ajouter des données de type dictionnaire, c'est-à-dire qu'une certaine forme d'imbrication devrait être prise en charge.
Un pseudo exemple de fichier simplifié:
truck:
color: blue
brand: ford
city: new york
cabriolet:
color: black
engine:
cylinders: 8
placement: mid
doors: 2
Réponses:
Vous pouvez avoir un module Python standard, par exemple config.py, comme ceci:
et utilisez-le comme ceci:
la source
.py
fichiers sont exécutables, donc tout type de code peut être exécuté tout en essayant de charger la configurationimport
. C'est inacceptable du point de vue de la sécurité.ast.literal_eval
? docs.python.org/3/library/ast.html#ast.literal_evalL'exemple de configuration que vous avez fourni est en fait YAML valide . En fait, YAML répond à toutes vos demandes, est implémenté dans un grand nombre de langues et est extrêmement convivial. Je vous recommande fortement de l'utiliser. Le projet PyYAML fournit un joli module python, qui implémente YAML.
Utiliser le module yaml est extrêmement simple:
la source
pip3 install pyyaml
pour le préparer à l'importer dans des scripts python.J'ai trouvé cela le plus utile et le plus facile à utiliser https://wiki.python.org/moin/ConfigParserExamples
Vous venez de créer un "myfile.ini" comme:
Et récupérez les données comme:
la source
Yaml et Json sont les formats de fichiers les plus simples et les plus couramment utilisés pour stocker les paramètres / configuration. PyYaml peut être utilisé pour analyser le yaml. Json fait déjà partie de python à partir de la 2.5. Yaml est un sur-ensemble de Json. Json résoudra la plupart des cas d'utilisation, sauf les chaînes multi-lignes où l'échappement est requis. Yaml s'occupe également de ces cas.
la source