2
我已经添加了一个参数-c,现在我想添加另一个名为-ca的参数。如何将-ca的默认值设置为-c?我想要做的是,如果没有指定-ca,则将-c指定为-ca。Python Argparse - 将参数的默认值设置为另一个参数
parser.add_argument("-c", type=str)
parser.add_argument("-ca", type=str, default=XXX)
谢谢。
我已经添加了一个参数-c,现在我想添加另一个名为-ca的参数。如何将-ca的默认值设置为-c?我想要做的是,如果没有指定-ca,则将-c指定为-ca。Python Argparse - 将参数的默认值设置为另一个参数
parser.add_argument("-c", type=str)
parser.add_argument("-ca", type=str, default=XXX)
谢谢。
通常,单个短划线标志是单个字符。所以-ca
是不明智的,但不是非法的。在正常的POSIX实践中,它可以被解释为-c a
或-c -a
。
另外允许标记参数(optionals
)以任何顺序发生。
解析从分配所有默认值开始。遇到相关标志时,新值将覆盖默认值。根据该顺序,一个参数不可能将另一个参数的值作为默认值。
一般来说,参数之间的交互最好在解析后处理。有一个mutually_exclusive
分组,但没有mutually_inclusive
。您可以通过自定义类Action
进行某种交互,但实现这一点与任何解析后测试一样有效。
总之,最简单的做法是使用默认default
,None
和测试
if args.ca is None:
args.ca = args.c
如果没有指定'-ca',然后'-c'应该分配给'-ca',但如果没有指定'-c'和'-ca',那么? – Haranadh
在这种情况下,您可以假定-c是强制性的。 – Allen
在读取数据到arg-parse并在从argparse对象读取之后处理它?问题是什么,?只是好奇地问。我会尝试写样本并更新你。 – Haranadh