如何让argparse的--help输出不含自身选项说明且正常显示?
解决argparse帮助输出隐藏--help选项说明的问题
要实现隐藏帮助输出中的--help自身说明,同时保留--help触发正常帮助信息的功能,直接使用add_help=False会完全禁用帮助机制,导致输入--help时触发必填参数错误。正确的做法是保留帮助功能,仅移除其在帮助文本中的显示:
可行方案代码示例
import argparse if __name__ == '__main__': parser = argparse.ArgumentParser(description='does foo') # 找到帮助选项并移除其说明文本 for action in parser._actions: if action.dest == 'help': action.help = None parser.add_argument('--bar', type=str, required=True, help='the bar value') args = parser.parse_args()
效果验证
运行脚本并添加--help参数,输出如下:
usage: script.py [-h] --bar BAR does foo options: --bar BAR the bar value
可以看到,帮助文本中不再显示-h, --help show this help message and exit这一行,但--help仍能正常触发帮助输出,不会报错。
原方案失效原因
使用add_help=False会完全禁用argparse内置的帮助选项,此时--help会被当作未知参数,再加上--bar是必填项,因此会触发参数缺失的错误。
内容的提问来源于stack exchange,提问作者matanox
相关产品推荐
相关产品推荐

