[英]Overriding default argparse -h behaviour
我有一个调用其插件的特定配置文件。 可以将参数传递给这些插件。 此配置文件还允许我在运行时调用任意命令。
插件使用了许多参数:其中一个是-h
,它不代表--help
。 现在,我的问题是我想调用我自己的Python脚本以及传递一些参数。 我正在使用argparse并希望与配置的其余部分保持一致,我创建了一个-h
标志。 令我惊讶的是,argparse只给了我argparse.ArgumentError: argument -h/--help: conflicting option string(s): -h
而不是自己的业务。
有没有办法阻止这种情况发生?
我很清楚,大多数人都希望-h
提供帮助,但这是我自己的脚本,我想我更清楚我想要使用标志而不是argparse devs。
在argparse文档中查找ArgumentParser参数。 有一个名为add_help,默认为True。
parser = argparse.ArgumentParser('Cool', add_help=False)
parser.add_argument('-h', '--hi', action='store_true', dest='hi')
这按预期工作。
有一个kwarg压制那些东西( docs )。
像这样创建你的解析器:
parser = argparse.ArgumentParser(prog='PROG', add_help=False)
如果你给ArgumentParser一个conflict_handler =“resolve”参数,添加你自己的-h将覆盖现有的参数,同时保持--help功能。
#!/usr/bin/env python3
import argparse
parse = argparse.ArgumentParser(conflict_handler="resolve")
parse.add_argument("-h", "--hello")
print(parse.parse_args())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.