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

Python Argparse - Set default value of a parameter to another parameter

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

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

parser.add_argument("-ca", type=str, default=XXX)

通常情况下,单破折号标志是单个字符。所以 -ca 是不明智的,尽管不是非法的。在正常的 POSIX 实践中,它可以解释为 -c a-c -a.

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

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

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

综上所述,最简单的就是使用默认的defaultNone和test

if args.ca is None:
    args.ca = args.c