如何构建Python argparse解析器以支持由顶级操作组织的不同参数,以及argparse的默认help
功能区分不同的操作/选项组?
e.g。
$ myprog.py list --verbose
Listing records:
...
$ myprog.py run --iterations=10
Running
...
$ myprog.py help
usage: myprog.py [action]
positional arguments:
action {list,run,help}
list Lists records.
run Process records.
help Show action help.
$ myprog.py help run
usage: myprog.py run [--iterations=N] [--verbose] [--skip]
optional arguments:
--iterations N Process N records.
--verbose Show extra messaging.
--skip Skip previously seen IDs.
我认为这可能会得到parents功能的支持,但这似乎更适用于对选项组进行分组而不是单独的参数操作。
答案 0 :(得分:1)
这是我使用argparse的解析器和子分析器来实现接近你想要的东西的一个例子,and that's a code to access SO by CLI ;-)
我还建议你看一下docopt
答案 1 :(得分:0)
你可以解析第一个项目,做出选择,然后为每个项目设置不同的参数解析器。如果要共享某些命令,则可以使用父功能在各种命令之间共享一些参数。
答案 2 :(得分:0)
parents
是向一个或多个解析器添加参数的便捷方式。它不会影响解析或帮助。
add_argument_group
是一种在help
中对参数进行分组的方法。它可能是你需要的。但是,它不会影响参数的解析方式。默认分组是“位置”和“可选”(意思是“使用标志”)。
add_subparsers
是一种分组参数及其解析的方法。有了它,您可以创建使用简单命令调用的新解析器。每个subparser都有自己的一组参数(和自己的帮助显示)
如果您想以完全不同的方式整理help
,请考虑编写自己的usage
和description
,并使用help=argparse.SUPPRESS
取消默认帮助热线。< / p>
IPython
是argparse
的高级用户。在调用help
之前,它会在sys.argv
中检测到argparse
,从而绕过默认帮助。