Python Argparse - 将参数的默认值设置为另一个参数

All*_*len 6 python argparse

我已经添加了一个参数 -c,现在我想添加另一个名为 -ca 的参数。如何将 -ca 的默认值设置为 -c?我想要做的是如果未指定 -ca,则将 -c 分配给 -ca。

parser.add_argument("-c", type=str)

parser.add_argument("-ca", type=str, default=XXX)
Run Code Online (Sandbox Code Playgroud)

谢谢。

hpa*_*ulj 10

通常,单破折号标志是单个字符。所以-ca是不明智的,但并不违法。在正常的 POSIX 实践中,它可以被解释为-c a-c -a

argparse允许标记参数 ( optionals) 以任何顺序出现。

解析从分配所有默认值开始。当遇到相关标志时,新值会覆盖默认值。鉴于该顺序,一个参数不可能将另一个参数的值作为默认值。

通常,最好在解析后处理参数之间的交互。有一个mutually_exclusive分组,但没有mutually_inclusive。您可以通过自定义Action类构建某种交互,但实现它与任何解析后测试一样多。

总之,最简单的就是使用默认的default, None, 和 test

if args.ca is None:
    args.ca = args.c
Run Code Online (Sandbox Code Playgroud)