2017-08-15 173 views
2

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

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

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

谢谢。

+1

如果没有指定'-ca',然后'-c'应该分配给'-ca',但如果没有指定'-c'和'-ca',那么? – Haranadh

+0

在这种情况下,您可以假定-c是强制性的。 – Allen

+0

在读取数据到arg-parse并在从argparse对象读取之后处理它?问题是什么,?只是好奇地问。我会尝试写样本并更新你。 – Haranadh

回答

2

通常,单个短划线标志是单个字符。所以-ca是不明智的,但不是非法的。在正常的POSIX实践中,它可以被解释为-c a-c -a

另外​​允许标记参数(optionals)以任何顺序发生。

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

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

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

if args.ca is None: 
    args.ca = args.c 
相关问题