argparse:位置参数默认不起作用?

时间:2017-04-13 11:29:19

标签: python argparse

我有:

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根本不可能这样做?

1 个答案:

答案 0 :(得分:4)

要使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='?',因为我正在寻找正好一个命令。