最好的选择是在解析后测试值,如果需要,请提供自己的custom usage
。
一个common_exclusive_group可以使用一个可选的位置,例如
group = parser.add_mutually_exclusive_group()
group.add_argument('-y','--yesterday', action='store_true')
group.add_argument('dates',nargs='?')
我以为它可以使用nargs='*'
,但ValueError: mutually exclusive arguments must be optional
出现错误。
因此,一个可选的位置值有效,但是无法将此测试与2个可选的位置值一起使用。
parser.add_argument('--yesterday',action='store_true')
parser.add_argument('start',nargs='?')
parser.add_argument('end',nargs='?')
然后测试args.yesterday
,args.start is None
和args.end is None
。如果这些组合的某些组合是错误的,请提出parser.error('....')
。
只要您可以区分默认值和用户给定的值,解析后的测试与您可能强制解析器执行的任何操作一样好。
例如:
PROG [--yesterday | [start [end]]]