python - argparse:包括默认值并键入 '--help'

标签 python argparse

现在我正在使用这个:

parser = argparse.ArgumentParser(description='Run the Foo',
    formatter_class=argparse.ArgumentDefaultsHelpFormatter)

这样打印出默认值:

--install-only        Do not run benchmark or verification, just install and
                      exit (default: False)

有没有一种简单的方法可以同时打印出类型,如下所示:

--install-only        Do not run benchmark or verification, just install and
                      exit (default: False) (type: Boolean)

最佳答案

您可以创建自己的 HelpFormatter 类,灵感来自 argparse.py 中包含的类:

class DefaultsAndTypesHelpFormatter(argparse.HelpFormatter):
    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:
                    help += ' (default: %(default)s)'
                if action.type:
                    help += ' (type: %(type)s)'
        return help

这将主要执行您想要的操作,但请注意它不会打印 action='store_true' 的类型。我认为这没关系,因为 (default: False) 已经很清楚了,但如果你想更明确,你可以添加一个子句,比如 if isinstance(action, argparse._StoreTrueAction) 并添加任何你喜欢的内容。

关于python - argparse:包括默认值并键入 '--help',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26479254/

相关文章:

python - 将 daemontools 与生成子进程的 Python 脚本一起使用

python - 删除模型的 'table' 并在 django 南迁移中重新创建

python - escape 无法修复 python 正则表达式错误 : unbalanced parenthesis

Python 参数解析器,在 -h 之前引发异常

python - 为什么使用 argparse 而不是 optparse?

python - 为什么即使指定了参数,argparse 也会包含可选参数的默认值?

python - 以值为条件将列名加入新的 pandas 列中

python - 无法导入名称 ‘etree’

python - 覆盖默认的 argparse -h 行为

python argparse 就像 --home-path