Python argparse subparser——帮助输出不';t显示子Parser';s描述
如果使用特定的帮助字符串创建子Parser,则当用户运行Python argparse subparser——帮助输出不';t显示子Parser';s描述,python,argparse,Python,Argparse,如果使用特定的帮助字符串创建子Parser,则当用户运行myprog命令--help时,不会显示此字符串: parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(help="sub-command help") parser_command = subparsers.add_parser("command", help="Issue a command") parser.parse_args() 顶级帮助显
myprog命令--help
时,不会显示此字符串:
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help="sub-command help")
parser_command = subparsers.add_parser("command", help="Issue a command")
parser.parse_args()
顶级帮助显示此命令
子命令,并在其旁边显示“发出命令”的说明:
$ python prog.py --help
usage: prog.py [-h] {command} ...
positional arguments:
{command} sub-command help
command Issue a command
optional arguments:
-h, --help show this help message and exit
但是,子命令的帮助没有显示以下说明:
$ python prog.py command --help
usage: prog.py command [-h]
optional arguments:
-h, --help show this help message and exit
我所期望的是子命令帮助打印出子命令的实际用途。也就是说,我希望在输出到python prog.py命令--help
的地方看到文本“发出命令”
是否有办法将此文本包含在子命令的帮助输出中?是否还有另一个subparser属性可用于提供子命令的描述?方法接受
ArgumentParser
构造函数所接受的(大多数)参数
在add_subparers
一段中,很容易忽略这句话:
此对象只有一个方法add_parser(),它接受命令名和任何ArgumentParser构造函数参数,并返回一个ArgumentParser对象,该对象可以像往常一样进行修改
主解析器的帮助:
In [97]: parser.parse_args('-h'.split())
usage: ipython3 [-h] {foo} ...
optional arguments:
-h, --help show this help message and exit
subcommands:
subparses description
{foo}
foo foo help
...
有关子Parser的帮助:
In [98]: parser.parse_args('foo -h'.split())
usage: ipython3 foo [-h] [--bar BAR]
subparser description
optional arguments:
-h, --help show this help message and exit
--bar BAR
...
…好吧,如果说拥有大量虚拟互联网点有一个价值的话,我想这就是能够覆盖系统中愚蠢的东西(比如禁止将“帮助”作为子字符串的标题)。谢谢,这正是我想要的。虽然
help
和description
内容可以是相同的值,但这种区别允许我在检查特定子命令时创建一个简短的顶级单行帮助字符串和一个更长、更详细的描述性字符串。完美的
In [98]: parser.parse_args('foo -h'.split())
usage: ipython3 foo [-h] [--bar BAR]
subparser description
optional arguments:
-h, --help show this help message and exit
--bar BAR
...