我目前正在用Python开发一个包含40个子命令的程序。解析器使用argparse完成。随着子命令数量的增加,搜索感兴趣的命令变得越来越复杂。目前,它显示如下。

$ pgrm -h
  Usage: pgrm [-h] [-v]  ...

  Blabla bla.

Main command arguments:
 -h, --help          show this help message and exit
 -v, --version       show program's version number and exit

Available sub-commands:

  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…


Usage example:
 'pgrm sub-command -h' for more information.

我想更改显示以便显示类别(例如更新/插入/选择)和相关的子命令。
$ pgrm -h
  Usage: pgrm [-h] [-v]  ...

  Blabla bla.

Main command arguments:
 -h, --help          show this help message and exit
 -v, --version       show program's version number and exit

Available sub-commands:

Updating
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
Selecting
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
Inserting
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…
  sub_cmd        Some description about the command…

argparser中是否有可以用来实现这种CLI的解决方案?
谢谢你

最佳答案

我几年前就探讨过这个问题
http://bugs.python.org/issue9341
允许对argparse子命令进行分组
如果我正确地阅读了我建议的补丁,它只需要更改_SubParsersAction类,而不需要进一步更改HelpFormatterArgumentParser类。

08-27 23:59
查看更多