如果你想让一个开关有多个参数,那么你可以使用nargs='+'。如果你的例子'-l'实际上是接受整数:
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(' '))
生产
Namespace(lst=[123, 234, 345, 456])
Namespace(lst=[456]) # Attention!
如果多次指定相同的参数,默认操作('store')将替换现有数据。
另一种方法是使用追加操作:
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(' '))
生产
Namespace(lst=[123, 234, 345, 456])
或者您可以编写一个自定义处理程序/操作来解析逗号分隔的值,这样您就可以这样做
-l 123,234,345 -l 456