2013-03-19 54 views
1

使用Python的​​模块,是否有一种方法可以通过在帮助输出中使用子分析器来创建子命令?Argparse子命令在帮助输出中的顺序

+0

看起来像重复:http://stackoverflow.com/questions/12268602/sort-argparse-help-alphabetically – 2013-03-19 12:54:34

+0

您链接到的问题是有关的参数的顺序。我需要对子命令进行排序。 – 2013-03-19 13:20:27

回答

2

我实际上找到了一种使用argparse.HelpFormatter的方法。

class CustomHelpFormatter(argparse.HelpFormatter): 
    def _iter_indented_subactions(self, action): 
     try: 
      get_subactions = action._get_subactions 
     except AttributeError: 
      pass 
     else: 
      self._indent() 
      if isinstance(action, argparse._SubParsersAction): 
       for subaction in sorted(get_subactions(), key=lambda x: x.dest): 
        yield subaction 
      else: 
       for subaction in get_subactions(): 
        yield subaction 
      self._dedent()