1

做了一些研究,但找不到任何可行的解决方案。我正在尝试解析以下命令行,其中“test”和“train”是两个独立的子命令,每个子命令都有不同的参数:

./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

我一直在尝试使用两个子解析器('test','train'),但似乎当时只能解析一个。让主解析器的那些子解析器父级也很棒,例如命令'-a'不必同时添加到子解析器'train'和'test'

有什么解决办法吗?

4

1 回答 1

0

以前有人问过这个问题,但我不确定找到这些问题的最佳方法。

整个子解析器机制是为一个这样的命令设计的。有几点需要注意:

  • add_subparsers创建一个位置参数;不像optionals`positional 只动作一次。

  • 如果您多次调用“add_subparsers”,则会引发错误

  • 解析仅围绕一个这样的调用构建

我们过去提出的一种解决方法是“嵌套”或“递归”子解析器。换句话说train,是设置,所以它也需要一个子解析器。但是关于是否需要子解析器是复杂的。

或者您可以绕过该subparser机制检测并调用多个解析器。

从侧边栏

在单个命令行中多次调用同一子命令

同时解析python中的多个子命令或以其他方式对解析的参数进行分组

于 2016-09-22T17:32:42.363 回答