Wenn Sie beabsichtigen, einen einzelnen Schalter mit mehreren Parametern zu versehen, verwenden Sie nargs='+'
. Wenn Ihr Beispiel "-l" tatsächlich ganze Zahlen nimmt:
a = argparse.ArgumentParser()
a.add_argument(
'-l', '--list', # either of this switches
nargs='+', # one or more parameters to this switch
type=int, # /parameters/ are ints
dest='lst', # store in 'lst'.
default=[], # since we're not specifying required.
)
print a.parse_args("-l 123 234 345 456".split(' '))
print a.parse_args("-l 123 -l=234 -l345 --list 456".split(' '))
Erzeugt
Namespace(lst=[123, 234, 345, 456])
Namespace(lst=[456]) # Attention!
Wenn Sie das gleiche Argument mehrmals angeben, wird die Standardaktion ( 'store'
) ersetzt die vorhandenen Daten.
Die Alternative ist die Verwendung der append
Aktion:
a = argparse.ArgumentParser()
a.add_argument(
'-l', '--list', # either of this switches
type=int, # /parameters/ are ints
dest='lst', # store in 'lst'.
default=[], # since we're not specifying required.
action='append', # add to the list instead of replacing it
)
print a.parse_args("-l 123 -l=234 -l345 --list 456".split(' '))
Das erzeugt
Namespace(lst=[123, 234, 345, 456])
Oder Sie können einen benutzerdefinierten Handler/Aktion schreiben, um kommagetrennte Werte zu parsen, so dass Sie Folgendes tun können
-l 123,234,345 -l 456