Python argparse 严格变量名

Python Argparse strict variable name

我试图了解 python 的 argparse 的功能(或错误?)。

在这里,我的简单代码:

import argparse

parser = argparse.ArgumentParser(usage="%(prog)s [--start]", add_help=False)
parser.add_argument("--start", help="Start prog", action="store_true")

arguments  = parser.parse_args()
start_fpc  = arguments.start

print arguments

当我执行这个脚本时,startstar 参数都被接受:

[ rsenet  2015-08-28 12:39:50] /tmp
$ python test.py --star
Namespace(start=True)

[ rsenet  2015-08-28 13:59:16] /tmp
$ python test.py --start
Namespace(start=True)

知道为什么吗?如果是,是否可以禁用此功能?

您需要禁用 allow_abbrev 选项,在 v3.5 中 was introduced

摘自argparse doc

  • allow_abbrev_ - Allows long options to be abbreviated if the abbreviation is unambiguous. (default: True)

这应该有帮助:

parser = argparse.ArgumentParser(usage="%(prog)s [--start]",
                                 allow_abbrev=False,
                                 add_help=False)