2016-05-20 9 views
0

私はPython 3.5.1でargparseを使用しています。私はデフォルトのヘルプコマンドを望んでいないので、add_help = False引数を使ってArgumentParserコンストラクタを無効にしました。ただし、アプリケーションのヘルプコマンドは削除されますが、サブコマンドのヘルプコマンドは引き続き存在します。 サブコマンド/サブパワーのヘルプを削除するにはどうすればよいですか? add_parserを行うとき、私はadd_help=Falseパラメータを渡すことができるように見えますPython argparse - サブコマンドのヘルプを無効にしますか?

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

答えて

1

subparserが作成されます。 **kwargsを使用すると、サブパーザは、主要なものが得ることができるパラメータのすべてではないにしても、ほとんどを得ることができます。

私はそれをテストする必要があります。

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