你可以使用
nargs=2
来设置期望的参数数量。
https://docs.python.org/zh-cn/3/library/argparse.html#the-add-argument-method
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('-b', '--bar', nargs=2)
_StoreAction(option_strings=['-b', '--bar'], dest='bar', nargs=2, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> args = parser.parse_args(['--bar', 'arg1', 'arg2'])
>>> args.bar
['arg1', 'arg2']
>>> args = parser.parse_args(['--bar', 'arg1'])
usage: [-h] [-b BAR BAR]
: error: argument -b/--bar: expected 2 arguments
请注意,此处显示的帮助信息为
-b BAR BAR
,这有点让人困扰(它默认重复了参数名称)。您可以将
metavar
设置为一个元组,以便更好地显示需要传递的两个参数的帮助信息。
>>> parser.add_argument('-f', '--foo', nargs=2, metavar=('desc1', 'desc2'))
_StoreAction(option_strings=['-f', '--foo'], dest='foo', nargs=2, const=None, default=None, type=None, choices=None, help=None, metavar=('desc1', 'desc2'))
>>> parser.print_help()
usage: [-h] [-b BAR BAR] [-f desc1 desc2]
optional arguments:
-h,
-b BAR BAR,
-f desc1 desc2,
更多相关信息请参见这里:https://docs.python.org/3/library/argparse.html#metavar
nargs='+'
,如果至少没有提供一个参数,则会出现错误,并且它允许您提供多个参数并将它们全部打包到列表中。更多信息请参见:https://docs.python.org/3/library/argparse.html#nargs。如果您正在进行复杂的命令行解析,我建议您使用其他回答者建议的action
进行进一步的自定义。 - alkasm