argparse 标志以跳过位置参数

argparse flag to skip positional args

我有一个通常需要位置参数的脚本:some-script POS。但是,当存在“--version”标志时,我希望能够 "waive" 位置参数要求:some-script --version

在 argparse 框架内是否有合适的方法来做到这一点?

我可以选择使用 "--version" in sys.argv,但我希望能够使用 argparse。

您必须通过设置 nargs='?' 使位置参数可选,如果不存在则在您的代码中引发错误。例如:

parser.add_argument('POSITIONAL', dest='positional', nargs='?')
...
if parsed.positional is None:
    print('Positional argument "POSITIONAL" is required')
    sys.exit(1)

有一个 version action 让这成为可能:

parser.add_argument('--version', action='version', version='%(prog)s 1.0')