切换到 argparse 会让我在子命令之间使用具有不同含义的相同标志吗?

Will switching to argparse let me use the same flag with different meanings between subcommands?

我们目前正在为我们的命令行界面使用 optparse,它大约是我们想要的 75%。我已经阅读了一些 argparse,然后想到也许拥有父解析器和子解析器的能力会让我们完成剩下的工作。

让我解释一下:我们有太多的命令行选项,以至于我们 运行 无法区分字母表中的字母。拥有一个带有多个子解析器的父解析器是否允许重用我们的一些标志?目前,用户将输入如下内容:

python myprog.py -c run_and_hide -t red -n 14

但我们也希望将 -t 用于不同的选项:

python myprog.py -c lie_down_and_sing -t orangutan -f fruit

optparse 不允许我将 -t 用于多个选项。我知道 optparse 允许我们输入长选项:

python myprog.py -c run_and_hide --color-of-shirt red -n 14

但我不想走那条路。那么,argparse 有这种能力吗?

第二个问题是只打印部分帮助消息的能力。您可以猜到,我们应用程序的帮助消息相当冗长。我们希望能够查看是什么“命令”(run_and_hide 与 lie_down_and_sing)引发了错误,并仅打印相关的帮助消息部分。我想知道是否可以为我们的每个“命令”选项设置一个子解析器,然后转到该解析器并打印帮助。

谢谢!

如果你重构你的解析器使得 run_and_hide, lie_down_and_sing, &c。是具有自己的子解析器的子命令,您确实可以在这些子解析器之间使用具有不同含义的相同标志。