argparse:不显示 -h 的用法

elh*_*efe 4 python argparse

编码

from argparse import ArgumentParser
p = ArgumentParser(description = 'foo')
p.add_argument('-b', '--bar', help = 'a description')
p.parse_args()
Run Code Online (Sandbox Code Playgroud)

...导致输出:

$ python argparsetest.py -h
usage: argparsetest.py [-h] [-b BAR]

foo

optional arguments:
  -h, --help         show this help message and exit
  -b BAR, --bar BAR  a description
Run Code Online (Sandbox Code Playgroud)

我想要的是:

$ python argparsetest.py -h
foo

optional arguments:
  -h, --help         show this help message and exit
  -b BAR, --bar BAR  a description
Run Code Online (Sandbox Code Playgroud)

例如,在寻求帮助时没有使用信息。有没有办法做到这一点?

ger*_*rdw 7

注意:要不显示特定参数的用法,请使用

parser.add_argument('--foo', help=argparse.SUPPRESS)
Run Code Online (Sandbox Code Playgroud)

根据文档


mgi*_*son 6

绝对有可能——但我不确定是否有记录......

from argparse import ArgumentParser,SUPPRESS
p = ArgumentParser(description = 'foo',usage=SUPPRESS)
p.add_argument('-b', '--bar', help = 'a description')
p.parse_args()
Run Code Online (Sandbox Code Playgroud)

通过阅读源代码,我已经将一些东西组合在一起,这在显示错误消息时似乎也有效......警告-这些东西大多没有记录,因此随时可能更改:-)

from argparse import ArgumentParser,SUPPRESS
import sys as _sys
from gettext import gettext as _

class MyParser(ArgumentParser):
    def error(self, message):    
        usage = self.usage
        self.usage = None
        self.print_usage(_sys.stderr)
        self.exit(2, _('%s: error: %s\n') % (self.prog, message))
        self.usage = usage


p = MyParser(description = 'foo',usage=SUPPRESS)
p.add_argument('-b', '--bar', help = 'a description')
p.parse_args()
Run Code Online (Sandbox Code Playgroud)