当前位置:  开发笔记 > 编程语言 > 正文

Argparse和ArgumentDefaultsHelpFormatter.选择sys.stdin/stdout作为默认值时格式化默认值

如何解决《Argparse和ArgumentDefaultsHelpFormatter.选择sys.stdin/stdout作为默认值时格式化默认值》经验,为你挑选了1个好方法。



1> A.H..:

您可以将ArgumentDefaultsHelpFormatter子类化以执行所需的操作。

from argparse import ArgumentDefaultsHelpFormatter,RawDescriptionHelpFormatter

class CustomFormatter(argparse.ArgumentDefaultsHelpFormatter, argparse.RawDescriptionHelpFormatter):
    def _get_help_string(self, action):
        help = action.help
        if '%(default)' not in action.help:
            if action.default is not argparse.SUPPRESS:
                defaulting_nargs = [argparse.OPTIONAL, argparse.ZERO_OR_MORE]
                if action.option_strings or action.nargs in defaulting_nargs:
                    if type(action.default) == type(sys.stdin):
                        print action.default.name
                        help += ' (default: ' + str(action.default.name) + ')'
                    else:
                        help += ' (default: %(default)s)'
        return help

parser = argparse.ArgumentParser(prog='PROG', formatter_class=CustomFormatter)

对我来说结果是:

optional arguments:
  -h, --help            show this help message and exit
  --infile File, -i File
                        The input file/stream. (default: )
  --outfile File, -o File
                        The output file/stream. (default: )
  --whatever-arg WHATEVER_ARG, -w WHATEVER_ARG
                        Change something (default: any)

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有