如何阻止argparse接受缩写的“长名称”标志?(Python 2.7)

3
>>> import argparse
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument("--dog")
_StoreAction(option_strings=['--dog'], dest='dog', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> args = parser.parse_args(["--do", "fido"])
>>> args
Namespace(dog='fido')

这似乎是一个bug。我本来希望它不会识别这个参数。我该如何防止这种情况发生?

编辑:显然,这是有文档记录的行为...


这是另一个选项(因为我不确定@符号在SO上的传播范围),链接地址:https://dev59.com/yGgv5IYBdhLWcg3wPOVn#39479562。 - cxw
您可以从3.5版本中获得argparse.py文件。 除使用yield from get_subactions()的一行代码外,3.5版本中的所有内容都可以在2.7中正常运行。 您需要保留2.7版本以便于此。 argparse只使用一个文件,因此很容易用自定义文件替换默认版本。 - hpaulj
1个回答

3

尝试

parser = argparse.ArgumentParser(allow_abbrev=False)

根据这里所述,需要Python 3.5或更高版本。


啊,这太完美了,但我正在使用Python 2.7。看来这个选项对我不可用。我已经更新了问题标签以反映这一点。 - 2rs2ts

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接