做了一些研究,但找不到任何可行的解决方案。我试图解析以下命令行,其中' test'并且'训练'是两个独立的子命令,每个子命令都有不同的参数:
./foo.py train -a 1 -b 2
./foo.py test -a 3 -c 4
./foo.py train -a 1 -b 2 test -a 3 -c 4
我一直在尝试使用两个subparser(' test',' train')但似乎当时只能解析一个。将主分析器的那些子分析符父母放在一起也是很好的,例如,命令' -a'没有必要添加到子分析师培训'和'测试'
任何解决方案?
答案 0 :(得分:0)
之前有人问过,虽然我不确定找到这些问题的最佳方式。
整个subparser机制是为一个这样的命令设计的。有几点需要注意:
323: History, Physics
999: Chemistry, History, Physics
1234: Chemistry
2834: Physics
3455: Chemistry, History, Mathematics
56767: Mathematics
创建一个位置参数;与add_subparsers
不同,“位置只行动一次。
'add_subparsers'如果多次调用它会引发错误
解析仅围绕一个此类调用构建
我们过去提出的一项工作是'嵌套'或'递归'子订阅者。换句话说,optionals
已设置,因此它也需要一个subparser。但是,是否需要子分析符是复杂的。
或者,您可以绕过train
机制来检测并调用多个解析器。
从侧边栏
Multiple invocation of the same subcommand in a single command line
和
Parse multiple subcommands in python simultaneously or other way to group parsed arguments