Python argparse - 禁用子命令的帮助?

时间:2016-05-20 21:54:18

标签: python argparse

我在Python 3.5.1上使用argparse。我不想要默认的帮助命令,所以我使用ArgumentParser构造函数的add_help = False参数禁用它。但是,虽然删除了应用程序的帮助命令,但它们仍然存在于子命令中。 如何删除子命令/子分析器的帮助?

3 个答案:

答案 0 :(得分:1)

subparser创建于:

class _SubParsersAction(Action):
    ....
    def add_parser(self, name, **kwargs):
        ...   
        # create the parser and add it to the map
        parser = self._parser_class(**kwargs)
        ...

在执行add_help=False时,我似乎可以传递add_parser参数。使用**kwargs,subparser可以获得大部分(如果不是全部)主要参数可以获得的参数。

我必须测试它。

In [721]: p=argparse.ArgumentParser(add_help=False)
In [722]: sp=p.add_subparsers()
In [723]: p1=sp.add_parser('test',add_help=False)

In [724]: p.print_help()     # no -h for main
usage: ipython3 {test} ...

positional arguments:
  {test}

In [725]: p1.print_help()   # no -h for sub
usage: ipython3 test

In [727]: p.parse_args(['-h'])
usage: ipython3 {test} ...
ipython3: error: unrecognized arguments: -h
...
In [728]: p.parse_args(['test','-h'])
usage: ipython3 {test} ...
ipython3: error: unrecognized arguments: -h

答案 1 :(得分:0)

用于禁用我内置在argparse中的-h / --help标志的选项。

看看这个:

{{3}}

答案 2 :(得分:0)

简短的回答,在 ArgumentParser 中添加“add_help=False”,如下所示:

parser = argparse.ArgumentParser(add_help=False)

来自https://docs.python.org/2/library/argparse.html#add-help