【问题标题】:Will switching to argparse let me use the same flag with different meanings between subcommands?切换到 argparse 会让我在子命令之间使用具有不同含义的相同标志吗?
【发布时间】:2021-01-04 20:45:44
【问题描述】:

我们目前正在将 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_hidelie_down_and_sing 等会更清楚。是子命令,而不仅仅是选项参数。您是否有令人信服的理由坚持当前的约定,即要求在子命令名称之前立即使用 -c
  • 不,我们不限于在 child-command 之前使用 -c。我必须管理我不知道的子命令。

标签: python argparse optparse


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 2012-07-15
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    相关资源
    最近更新 更多