【发布时间】:2017-10-23 23:12:27
【问题描述】:
我有一个 Python 脚本,我想在其中强制命名所有必需的参数(非位置)。
所以以下应该可以工作:
python myscript --arg1 arg1 --arg2 arg2
python myscript --arg2 arg2 --arg1 arg1
但以下应该失败:
python myscript arg1 arg2
python myscript --madeUpArg arg1 --arg2 arg2
据我所知,在 argparse 中,如果你做了一些需要的东西,它就会变成一个位置参数,所以我想要失败的第二个例子都会成功(即使是第二个例子,也有虚构的参数!)。如何获得所需的功能?
【问题讨论】:
-
我要指出,有一个通用的约定,要求的参数应该是位置的,而开关(带有破折号的开关,如
--arg1)应该是可选的。并不是说你必须那样做,而是要知道你会给一些人扔一个曲线球,可以这么说 - 他们可能不希望程序需要非位置参数。 -
这个
required段落并没有说它变成了positional、docs.python.org/3/library/argparse.html#required。您是否尝试过required参数? -
如果您不喜欢
help标记所需命名参数的方式,请使用argument_groupdocs.python.org/3/library/argparse.html#argument-groups。