【问题标题】:Python argparse - disable help for subcommands?Python argparse - 禁用子命令的帮助?
【发布时间】:2016-09-18 07:01:44
【问题描述】:

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

【问题讨论】:

    标签: python argparse


    【解决方案1】:

    子解析器创建于:

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

    看起来我可以在执行add_parser 时传递add_help=False 参数。使用**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
    

    【讨论】:

      【解决方案2】:

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

      看看这个:

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

      【讨论】:

        【解决方案3】:

        简短回答,将“add_help=False”添加到 ArgumentParser,如下所示:

        parser = argparse.ArgumentParser(add_help=False)
        

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

        【讨论】:

          猜你喜欢
          • 2021-11-14
          • 2013-03-08
          • 2021-09-16
          • 2019-11-25
          • 2018-12-03
          • 1970-01-01
          • 2016-03-24
          • 2021-12-06
          • 2018-08-15
          相关资源
          最近更新 更多