python - 切换到 argparse 会让我在子命令之间使用具有不同含义的相同标志吗?
问题描述
我们目前正在使用 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. 是具有自己的子解析器的子命令,您确实可以在这些子解析器之间使用具有不同含义的相同标志。
推荐阅读
- php - 如何删除 woocommerce 错误您无法将另一个“产品名称”添加到您的购物车
- arrays - OpenGL:仅为 2D 纹理数组的某些层自动生成 mipmap
- mysql - 如果表不存在,则跳过 R 中的 for 循环
- javascript - 在某个日期之后删除项目(Firebase Cloud 功能)
- javascript - 谷歌云语音 api javascript/angular
- uiview - 如何将 UIView 添加到 SCNNode 中?迅速
- python - Gensim Word2vec 冻结一些词向量并更新其他
- google-api - google.cloud.pubsub - 流式拉取 PubSub 消息
- angular - Angular 6:可观察的
和 isEmpty() 运算符 - javascript - 未找到模块 - 反应