Python Argparse:解析多个子命令

Python Argparse:解析多个子命令,python,argparse,subcommand,subparsers,Python,Argparse,Subcommand,Subparsers,做了一些研究,但找不到任何有效的解决方案。我试图解析以下命令行,其中“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 我一直在尝试使用两个子parser('test','train'),但似乎当时只能解析一个子parser。另外,如果有主解析器的子parser父级,例如命令“-a”不必同时

做了一些研究,但找不到任何有效的解决方案。我试图解析以下命令行,其中“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
我一直在尝试使用两个子parser('test','train'),但似乎当时只能解析一个子parser。另外,如果有主解析器的子parser父级,例如命令“-a”不必同时添加到子parser“train”和“test”中,那就太好了


有什么解决办法吗?

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

整个次Parser机制就是为一个这样的命令而设计的。有几件事需要注意:

  • add_subparser
    创建位置参数;与选项不同a`positional只执行一次操作

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

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

我们在过去提出的一种解决方法是“嵌套”或“递归”子parer。换句话说,
train
是设置好的,所以它也需要一个子parser。但对于是否需要副检察官,还有一个复杂的问题

或者,您可以检测并调用多个解析器,绕过
子解析器
机制

从侧边栏


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

整个次Parser机制就是为一个这样的命令而设计的。有几件事需要注意:

  • add_subparser
    创建位置参数;与选项不同a`positional只执行一次操作

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

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

我们在过去提出的一种解决方法是“嵌套”或“递归”子parer。换句话说,
train
是设置好的,所以它也需要一个子parser。但对于是否需要副检察官,还有一个复杂的问题

或者,您可以检测并调用多个解析器,绕过
子解析器
机制

从侧边栏


您可以使用
parents
将公共参数添加到多个子parser。或者您可以为主解析器定义
-a
。您可以使用
parents
向多个子解析器添加公共参数。或者您可以为主解析器定义
-a