Ich versuche mich gerade an einem Script mit argparse (wobei meine Stolperstelle per optparse genauso vorhanden waere) und haenge da an einer Stelle:
mein Script soll einerseits als Modul funktionieren, aber auch beim Commandline-Aufruf was machen. Deshalb steckt der Hauptteil der Funktionalitaet in einer Funktion und ueber ne "__name__ == '__main__'"-Abfrage realisiere ich den Commandline-Teil. Soweit so gut. Meine Funktion sieht nun etwa so aus:
Code: Alles auswählen
def myfunc(varA, varB = 123, varC = 456, varD = True, varE = 789)
Im __main__-Teil frag ich nun per argparse die Commandline ab und hab da auch alle obigen Variablen als positionale und optionale Parameter angelegt:
Code: Alles auswählen
parser = argparse.ArgumentParser()
parser.add_argument('varA')
parser.add_argument('-b', '--varB')
...
args = parser.parse_args()
Code: Alles auswählen
result = myfunc(varA = args.varA, varB = args.varB, varC = args.varC, varD = args.varD, varE = args.varE)
Vermutlich ist schon die ganze Grundidee falsch, das so zu loesen. Aber ich steh da grad als Nicht-Python-Crack ziemlich wie der Ochs vorm Berg und hab null Idee, wie man das eigentlich richtig und moeglichst noch elegant loest. Packt man die Zuweisung der Defaultwerte woanders hin? Erzeugt man vorher schonmal alle Variablen fuer die Funktion und weist denen ueber lauter 'if args.varXY'-Konstruktionen nur dann andere Werte wenn der entsprechende Commandline-Parameter vorhanden ist? Oder ...?
Danke fuer jegliche Hinweise!
Abraham