argparse:位置参数的默认值不起作用?
argparse: default for positional argument not working?
我有:
from argparse import ArgumentParser
parser = ArgumentParser(description='Test')
parser.add_argument("command",
help="the command to be executed",
choices=["dump", "delete", "update", "set"],
default="set")
parser.parse_args()
但是当我 运行: python test.py
我得到:
usage: test.py [-h] {dump,delete,update,set}
test.py: error: too few arguments
也许我今天瞎了眼;但我不知道我的输入有什么问题。或者这对于 argparse 来说根本不可能吗?
要使 default
关键字参数生效,您必须添加 nargs='*'
,如下所示:
parser.add_argument("command",
help="the command to be executed",
choices=["dump", "delete", "update", "set"],
nargs='?',
default="set"
)
有关详细信息,请参阅 https://docs.python.org/2/library/argparse.html#default:)
OP 编辑:nargs='*'
允许输入多个命令。因此更改为 nargs='?'
,因为我正在寻找 恰好要输入的一个 命令。
我有:
from argparse import ArgumentParser
parser = ArgumentParser(description='Test')
parser.add_argument("command",
help="the command to be executed",
choices=["dump", "delete", "update", "set"],
default="set")
parser.parse_args()
但是当我 运行: python test.py
我得到:
usage: test.py [-h] {dump,delete,update,set}
test.py: error: too few arguments
也许我今天瞎了眼;但我不知道我的输入有什么问题。或者这对于 argparse 来说根本不可能吗?
要使 default
关键字参数生效,您必须添加 nargs='*'
,如下所示:
parser.add_argument("command",
help="the command to be executed",
choices=["dump", "delete", "update", "set"],
nargs='?',
default="set"
)
有关详细信息,请参阅 https://docs.python.org/2/library/argparse.html#default:)
OP 编辑:nargs='*'
允许输入多个命令。因此更改为 nargs='?'
,因为我正在寻找 恰好要输入的一个 命令。