【问题标题】:Overwrite help string覆盖帮助字符串
【发布时间】:2020-11-17 19:07:47
【问题描述】:

在我的项目中,我主要使用 docopt,但 to overcome a limitation 我正在为一个函数切换到 argparse。但是,为了保持一致性,当我键入-h--help 时,我仍想打印我自己的文档字符串。令人惊讶的是,我找不到如何做到这一点。

这不起作用:

parser.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS, help=__doc__)

因为它给出了

argparse.ArgumentError: argument -h/--help: conflicting option strings: -h, --help

但是我必须做什么

【问题讨论】:

  • @SerialLazer 谢谢。我不确定……或者更确切地说,我不这么认为。当argparse 打印文档字符串时,我想做的只是为了打印其他东西,我不想在它上面添加一个选项。但也许我忽略了什么?
  • --help 默认包含;所以这就是为什么添加你自己的会产生冲突。有一个ArgumentParser 参数可以关闭自动帮助参数。指定help=__doc__ 无济于事,因为它只是更改了常规帮助显示中的帮助行。它不会改变整个显示。

标签: python argparse


【解决方案1】:

我发现一种解决方法是覆盖默认的print_help函数,如下:

import argparse

class Parser(argparse.ArgumentParser):

    def print_help(self):
        print(__doc__)

parser = Parser()
parser.add_argument('-f', '--foo', required=False)

【讨论】:

  • 我认为这是最好的。 ipython 在使用 argparse 解析器之前通过查看 sys.argv 来完成类似的操作。换句话说,它首先捕获help 命令。
猜你喜欢
  • 2011-04-11
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多