Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重写默认argparse-h行为_Python_Argparse - Fatal编程技术网

Python 重写默认argparse-h行为

Python 重写默认argparse-h行为,python,argparse,Python,Argparse,我有一个特定的配置文件,它调用它的插件。可以将参数传递给这些插件。这个配置文件还允许我在运行时调用任意命令 插件使用了许多参数:其中一个参数是-h,它不代表--help。现在,我的问题是,我想调用我自己的Python脚本,并向它传递一些参数。我正在使用argparse,为了与配置的其余部分保持一致,我创建了一个-h标志。令我惊讶的是,argparse只给了我argparse.ArgumentError:argument-h/--help:冲突的选项字符串:-h,而不关心自己的事情 有没有办法阻止

我有一个特定的配置文件,它调用它的插件。可以将参数传递给这些插件。这个配置文件还允许我在运行时调用任意命令

插件使用了许多参数:其中一个参数是
-h
,它不代表
--help
。现在,我的问题是,我想调用我自己的Python脚本,并向它传递一些参数。我正在使用argparse,为了与配置的其余部分保持一致,我创建了一个
-h
标志。令我惊讶的是,argparse只给了我
argparse.ArgumentError:argument-h/--help:冲突的选项字符串:-h
,而不关心自己的事情

有没有办法阻止这种情况发生


我很清楚,大多数人都希望
-h
能提供帮助,但这是我自己的脚本,我想我比argparse devs更清楚我想用一个标志来做什么。

有一个kwarg来抑制那些东西()。
按如下方式创建解析器:

parser = argparse.ArgumentParser(prog='PROG', add_help=False)
在中查找ArgumentParser参数。有一个叫 添加默认为True的帮助

parser = argparse.ArgumentParser('Cool', add_help=False)
parser.add_argument('-h', '--hi', action='store_true', dest='hi')

这与预期一样有效。

如果您给ArgumentParser一个conflict\u 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())

你确实比argparse开发者更清楚,这正是为什么你必须说出你的意思,而不仅仅是相信他们能正确地猜测你的想法。Default
-h--help
之所以有意义,是因为它非常常见。告诉您何时意外引入了与常见默认预期的冲突是一件好事。您需要做的就是告诉argparse您打算这么做,一切都很好!非常感谢你!我会将另一个答案标记为第一个答案,并且几乎完全相同。我一定是在文件里漏掉了……哦,你可能是对的。最深的歉意-漫漫长夜。该死,我想保持
--help
,但不是
-h-
@ThorCaller,
解析器。除了
添加
帮助=False
之外,还要添加参数('--help',action='help',help='show this help message and exit')
。这是正确的答案,或者更确切地说,是在大多数用例中有用的答案。