14.1.6.2 选项冲突
前面的例子指出,在使用相同的参数名向一个解析器增加两个参数处理器时,会导致一个异常。可以传入一个conflict_handler来改变冲突解决行为。有两个内置的处理器,分别是error(默认)和resolve,它们会根据处理器增加的顺序来选择处理器。
import argparse
parser = argparse.ArgumentParser(conflict_handler='resolve')
parser.add_argument('-a',action="store")
parser.add_argument('-b',action="store",help='Short along')
parser.add_argument('--long-b','-b',
action="store",
help='Long and short together')
print(parser.parse_args(['-h']))
在这个例子中,使用了给定参数名的最后一个处理器。因此,独立选项-b被–long-b的别名屏蔽。
切换add_argument()调用的顺序,将不再屏蔽独立选项。
import argparse
parser = argparse.ArgumentParser(conflict_handler='resolve')
parser.add_argument('-a',action="store")
parser.add_argument('--long-b','-b',
action="store",
help='Long and short together')
parser.add_argument('-b',action="store",help='Short along')
print(parser.parse_args(['-h']))
现在两个选项可以一起使用。