übergabe von Parameter Python

Gast #6756044
Lesenswert?

Hi, ich möchte in meinem Programm gerne mit Befehlen arbeiten. Also das 
man Parameter mitgeben kann und dann ein Bestimmter teil des Programmes 
ausgeführt wird. Hat hier jemand eine Idee? Folgend findet Ihr ein 
Beispiel um es evtl. besser zu verstehen was ich möchte.

Danke im voraus
Gruß Leon

./mein_script hallo
./mein_script tschüss

Wenn hallo mitgegeben wird: print("hallo")
wenn tschüss mitgegeben wird: print("tschüss")
#6758021
Lesenswert?

Leon schrieb:
> Hi, ich möchte in meinem Programm gerne mit Befehlen arbeiten. Also das
> man Parameter mitgeben kann und dann ein Bestimmter teil des Programmes
> ausgeführt wird. Hat hier jemand eine Idee?

Für so etwas habe ich eine Standardlösung, die aus einem "Hauptprogramm" 
und dynamisch ladbaren Modulen in einem definierten Unterverzeichnis 
besteht.
1
for modulefile in os.listdir(MODULES_DIR):
2
    modulename, _ = os.path.splitext(modulefile)
3
    if modulename != '__pycache__':
4
        try:
5
            mod = import_module(modulename)
6
            mod.register(subparser, modulename)
7
        except:
8
            sys.stderr.write('while loading module "%s":\n'%(modulename))
9
            traceback.print_exc()
10
            sys.exit(-4)

HTH ;-)
Gast #6758227
Lesenswert?

Vielen Dank für die vielen und schellen Antworten.
Habe es mit dem sys.argv gemacht. Dort habe ich dann den 2 Wert 
ausgelesen und in einer If-Verzweigung verglichen.
Nochmal vielen dank für die Hilfe.
Gruß Leon
#6767405
Lesenswert?

moeb schrieb:
> Man sollte sich angewöhnen, bei Kommandozeilenparameter immer argparse
> zu verwenden. Siehe auch Posts von Thomas W. und Daniel A.

argparse hat den Vorteil, dass man Kommandozeilenargumente "benennen" 
kann. Man muss dann nicht alle Argumente an die Kommandozeile anfügen 
und die Reihenfolge spielt keine Rolle. Das hat etwas Ähnlichkeit mit 
den Keyword-Args (kwargs) bei Funktionen/Methoden.
Wenn man aber nur ein Argument übergeben will, ist das mit Kanonen auf 
Spatzen geschossen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren