如何在 argparse 中要求参数并使它们成为非位置参数?

How to require arguments in argparse and make them non-positional?

我有一个 Python 脚本,我想在其中强制命名所有必需的参数(非位置)。

所以以下应该有效:

python myscript --arg1 arg1 --arg2 arg2 python myscript --arg2 arg2 --arg1 arg1

但以下应该会失败:

python myscript arg1 arg2 python myscript --madeUpArg arg1 --arg2 arg2

据我所知,在 argparse 中,如果你提出要求,它就会变成一个位置参数,所以我想失败的第二个例子都会成功(即使是第二个例子,有虚构的论点! ).我如何获得所需的功能?

只要您不显式调用 parse_known_args,您未定义的任何参数都不会被接受。

要使其他可选参数成为必需参数,请在定义时使用 required 关键字参数。

p = argparse.ArgumentParser()
p.add_argument("--arg1", required=True)
p.add_argument("--arg2", required=True)