Je suis d'accord avec l'idée de S. Lott d'utiliser un fichier de configuration, mais je vous recommande d'utiliser le module intégré ConfigParser (ConfigParser dans la version 3.0) pour l'analyser, plutôt qu'une solution brassée maison.
Voici un bref script qui illustre ConfigParser et optparse en action.
import ConfigParser
from optparse import OptionParser
CONFIG_FILENAME = 'defaults.cfg'
def main():
config = ConfigParser.ConfigParser()
config.read(CONFIG_FILENAME)
parser = OptionParser()
parser.add_option("-l",
"--language",
dest="language",
help="The UI language",
default=config.get("Localization", "language"))
parser.add_option("-f",
"--flag",
dest="flag",
help="The country flag",
default=config.get("Localization", "flag"))
print parser.parse_args()
if __name__ == "__main__":
main()
Sortie:
(<Values at 0x2182c88: {'flag': 'japan.png', 'language': 'Japanese'}>, [])
Run avec "parser.py --language=French
"
(<Values at 0x2215c60: {'flag': 'japan.png', 'language': 'French'}>, [])
Aide est construit en Run avec" parser.py --help
":
Usage: parser.py [options]
Options:
-h, --help show this help message and exit
-l LANGUAGE, --language=LANGUAGE
The UI language
-f FLAG, --flag=FLAG The country flag
Le fichier de configuration:
[Localization]
language=Japanese
flag=japan.png
Il n'y a aucune raison d'utiliser eval ici - vous pouvez simplement utiliser le maréchal. –
@Nick Bastin: Eval is not Evil, seulement les utilisateurs finaux sociopathes qui essayent toujours de pirater l'application en exploitant l'utilisation d'eval. –
Wagging votre doigt à un attaquant en profitant d'une faille dans votre armure ni élimine la fente ou arrête l'attaque ... :) –