【发布时间】:2017-01-19 12:50:13
【问题描述】:
我正在尝试创建一个类似的命令
prog [-h] [-i ID [ID ...]] | -x [SOMETHING]
{cmd1,cmd2,cmd3}...
所以基本上在顶层,我有一个解析器,它对 -i 和 -x 选项有一个互斥组,然后按照这些(可能还有其他)选项,我有一个要运行的命令。每个命令都有自己使用的一组选项。我可以使用add_subparsers() 使命令正常工作,但我遇到的问题是当我尝试向具有nargs='+' 的根解析器添加参数时。当我这样做时,它会吞下-i 的所有参数,认为该命令是一个参数而不是一个 ID。
有没有办法解决这个问题?似乎它必须查看 -i 的参数以查找命令字,然后告诉 argparse 它应该在该点恢复解析。
【问题讨论】:
-
如果不是太大,你能给我们看一个minimal reproducible example/你的代码吗?
-
结帐Click 使用 python 构建 CLI 并省去您的麻烦。
-
@garnertb +1。可以确认,
click很棒,可以很好地处理子命令。