24

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

插件使用许多参数:其中一个是-h,它不代表--help. 现在,我的问题是我想调用我自己的 Python 脚本并传递一些参数。我正在使用 argparse 并希望与配置的其余部分保持一致,我创建了一个-h标志。令我惊讶的是,argparse 只是给了我,argparse.ArgumentError: argument -h/--help: conflicting option string(s): -h而不是管自己的事。

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

我很清楚大多数人都希望-h提供帮助,但这是我自己的脚本,我认为我比 argparse 开发人员更了解我想要使用标志的目的。

4

3 回答 3

32

argparse 文档中查找 ArgumentParser 参数。有一个名为 add_help,默认为 True。

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

这按预期工作。

于 2013-02-19T06:17:34.193 回答
11

如果你给 ArgumentParser 一个冲突处理程序 =“解决” 参数,添加你自己的 -h 将覆盖现有的,同时保持 --help 功能。

#!/usr/bin/env python3
import argparse
parse = argparse.ArgumentParser(conflict_handler="resolve")
parse.add_argument("-h", "--hello")
print(parse.parse_args())
于 2019-03-12T15:11:45.920 回答
10

有一个 kwarg 可以压制这些东西(docs)。
像这样创建你的解析器:

parser = argparse.ArgumentParser(prog='PROG', add_help=False)
于 2013-02-19T06:15:20.353 回答