Ich stimme mit S.Lott Idee einer Config-Datei zu verwenden, aber ich würde empfehlen, die eingebauten in ConfigParser (ConfigParser in 3.0) Modul es zu analysieren, anstatt eine selbstgebraute Lösung.
Hier ist ein kurzes Skript, das ConfigParser und optparse in Aktion veranschaulicht.
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()
Ausgang:
(<Values at 0x2182c88: {'flag': 'japan.png', 'language': 'Japanese'}>, [])
Run mit "parser.py --language=French
"
(<Values at 0x2215c60: {'flag': 'japan.png', 'language': 'French'}>, [])
Hilfe gebaut in Run mit" 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
Die Konfigurationsdatei:
[Localization]
language=Japanese
flag=japan.png
Es gibt keinen Grund, hier eval zu verwenden - Sie können nur Marschall verwenden. –
@Nick Bastin: Eval ist nicht böse, nur die soziopathischen Endbenutzer, die immer versuchen, die Anwendung zu hacken, indem sie Eval ausnutzen. –
Wackeln Sie mit dem Finger auf einen Angreifer, der einen Riss in Ihrer Rüstung ausnutzt, beseitigt weder den Riss noch stoppt er den Angriff ... :) –