最好的选择是在解析后测试值,如果需要,请提供自己的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 beoptional出现错误。
因此,一个可选的位置值有效,但是无法将此测试与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 isNone。如果这些组合的某些组合是错误的,请提出
parser.error('....')。只要您可以区分默认值和用户给定的值,解析后的测试与您可能强制解析器执行的任何操作一样好。
考虑一下什么使用消息对您的用户来说也是一个好主意。例如
例如:
PROG [--yesterday | [start [end]]]
不是argparse可以自动生成的东西。



