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")
Gibt mehrere Möglichkeiten. z.B. Ein Argument Parser, oder direkt selbst die Argumente verarbeiten. https://docs.python.org/3/library/argparse.html https://docs.python.org/3/library/sys.html#sys.argv
Stimmt, vermutlich reicht import sys for argument in sys.argv: print argument
Klassisch wäre der Weg mit strings / charactern und einer Art state machine "if wort then befehl xy" z.B. Aber das wäre nicht sehr pythonic, da gibts bestimmt was schon nen modul für :)
Man sollte sich angewöhnen, bei Kommandozeilenparameter immer argparse zu verwenden. Siehe auch Posts von Thomas W. und Daniel A.
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 ;-)
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
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.