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

时间:2017-08-15 04:04:22

标签: python argparse

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

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

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

感谢。

1 个答案:

答案 0 :(得分:3)

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

同样argparse允许标记的参数(optionals)以任何顺序发生。

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

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

总而言之,最简单的方法是使用默认的defaultNone和测试

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