第十四章:应用构建模块-argparse:命令行选项和参数解析-解析器组织-选项冲突

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']))

现在两个选项可以一起使用。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43193719/article/details/93224808