如何在argparse帮助输出中仅隐藏参数的长选项而保留短选项显示
实现方法
你可以通过自定义argparse的帮助格式化类实现需求,代码修改如下:
from argparse import ArgumentParser, HelpFormatter # 自定义帮助格式化器,仅保留短选项在帮助说明中的显示 class CustomHelpFormatter(HelpFormatter): def _format_action_invocation(self, action): if not action.option_strings: # 处理位置参数逻辑 metavar, = self._metavar_formatter(action, action.dest)(1) return metavar # 只取第一个选项字符串即短选项 parts = [action.option_strings[0]] # 拼接参数占位符 if action.nargs != 0: args_str = self._format_args(action, action.dest.upper()) parts.append(args_str) return ' '.join(parts) # 初始化解析器时指定自定义格式化类 parser = ArgumentParser(formatter_class=CustomHelpFormatter) parser.add_argument("-i", "--input", action="store", help="input file") # 测试打印帮助 parser.print_help()
运行后输出的帮助内容和你需要的效果完全一致。
如果仅需要隐藏个别参数的长选项,不需要全局生效,也可以用参数拆分+手动指定usage的方式实现:
from argparse import ArgumentParser, SUPPRESS # 手动指定usage,避免长选项出现在用法说明中 parser = ArgumentParser(usage="%(prog)s [-h] [-i INPUT]") # 定义短选项,正常显示帮助信息 parser.add_argument("-i", action="store", dest="input", help="input file", metavar="INPUT") # 定义长选项,设置help为SUPPRESS隐藏帮助显示,和短选项绑定同一个存储字段 parser.add_argument("--input", action="store", dest="input", help=SUPPRESS) # 测试打印帮助 parser.print_help() # 测试长选项是否正常生效 args = parser.parse_args(["--input", "test.txt"]) print(args.input) # 输出test.txt,说明长选项可正常使用
内容的提问来源于stack exchange,提问作者PaliProx
相关产品推荐
相关产品推荐

