In Python verstehe ich, wie int- und str-Argumente zu Skripten hinzugefügt werden können.
parser=argparse.ArgumentParser(description="""Mydescription""")
parser.add_argument('-l', type=str, default='info', help='String argument')
parser.add_argument('-dt', type=int, default ='', help='int argument')
Was ist das für Boolesche?
Grundsätzlich möchte ich meinem Skript ein Flag übergeben, das dem Skript mitteilt, ob eine bestimmte Aktion ausgeführt werden soll oder nicht.
action='store_true'
?Antworten:
Sie können entweder das
action
mitstore_true
| verwendenstore_false
, oder Sie können ein int verwenden und implizites Casting einen booleschen Wert überprüfen lassen.Mit dem
action
würden Sie ein--foo=true
und--foo=false
-Dargument nicht übergeben , sondern es einfach einschließen, wenn es auf true gesetzt würde.In der Tat denke ich, was Sie vielleicht wollen, ist
parser.add_argument('-b', action='store_true', default=False)
quelle
default=False
es notwendig ist.parser.add_argument('--foo', action='store_true')
quelle
import distutils.util ARGP.add_argument('--on', '-o', type=distutils.util.strtobool, default='true')
Beispiel, wie man es nennt:
$ ./myscript # argp.on = 1 $ ./myscript --on=false # argp.on = 0 $ ./myscript --on=False # argp.on = 0 $ ./myscript --on=0 # argp.on = 0 $ ./myscript --on=1 # argp.on = 1 $ ./myscript -o0 # argp.on = 0 $ ./myscript -o false # argp.on == 0
Ich sollte erwähnen, dass Sie das Argument auch an eine lokale Wrapper-Funktion binden können, um eine andere exakte Zeichenfolgenübereinstimmung zu handhaben, wenn Sie Werte wie "Ja" und "Nein" unterstützen möchten. Sie können auch versuchen, die Eingabe als yaml zu interpretieren, was auch Ja / Nein verarbeiten kann. Ich habe das schon eine Weile nicht mehr gemacht, und ich denke, in letzter Zeit habe ich mich gegenseitig ausschließende Argumente mit dem gleichen
dest
Wert, eins--no-option
mitaction='store_false'
und eins--option
mitaction='store_true'
quelle