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-解析测试一样多。
综上所述,最简单的就是使用默认的default
、None
和test
if args.ca is None:
args.ca = args.c
我已经添加了一个参数-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-解析测试一样多。
综上所述,最简单的就是使用默认的default
、None
和test
if args.ca is None:
args.ca = args.c