如果另一个互斥参数为 true,则将默认值设置为 false

2023-12-21

我意识到这很像使用 argparse 模块在 Python 中设置两个互斥选项的默认选项 https://stackoverflow.com/questions/9365486/setting-default-option-in-python-of-two-mutually-exclusive-options-using-the-arg尽管从不同的角度来看(并且那里给出的答案似乎没有帮助)。

代码块(解析器是argparse.ArgumentParser的实例):

mutex_group = parser.add_mutually_exclusive_group()
mutex_group.add_argument("--show", action="store_true", 
    dest="show", default=True)
mutex_group.add_argument("--insert", action="store_true", 
    dest="insert")

opts = parser.parse_args()

如果两者都不是--show or --insert已指定,我想默认为--show (hence default=True)但是如果--insert然后使用opts.show尽管是互斥块的一部分,但仍然设置为 true(因为默认值)。

当前代码在测试是否存在时检查是否未设置其他选项opt.show为 True,即:

if opts.show and not opts.insert:
    do_something()
elif opts.insert:
    do_something_else()

但这无法扩展(当您添加时会发生什么--delete到互斥组等)所以我正在寻找一种更好的方法来使所有其他变量opts.showfalse,但仍将其作为默认值。

阅读 argparse 文档,我认为自定义操作是可行的方法,但无法看到如何从其中访问互斥组的其他成员(理论是我可以迭代它们,并翻转默认值,如果其余的均已设置)。 另一种选择是反转 if 条件,但这似乎不干净(如果默认值更改,则 if 语句的顺序也必须更改)。


我想到也许'store_const'将是一个更合适的操作(所有参数都指向同一目的地)。

import argparse
parser = argparse.ArgumentParser()
mutex_group = parser.add_mutually_exclusive_group()
mutex_group.add_argument("--show", action="store_const", 
    dest="mutex", const="show")
mutex_group.add_argument("--insert", action="store_const", 
    dest="mutex", const="insert")
mutex_group.add_argument('--delete', action="store_const",
    dest="mutex", const="delete")


parser.set_defaults(mutex='show')
args = parser.parse_args()
print(args)

现在你可以使用args.mutex找出要执行的操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果另一个互斥参数为 true,则将默认值设置为 false 的相关文章

随机推荐

  • 在 R 中使用plot()时如何摆脱网格?

    因此 我使用 R 通过 Vegan 包执行 DCA 去趋势对应分析 每次绘制结果时 我都会在图中间得到一个网格 我想摆脱它 这是我的代码 dca lt decorana dados plot dca type n ann FALSE ori
  • 在React中添加长按事件

    有没有办法添加长按React Web 应用程序中的事件 我有地址列表 长按任何地址时 我想触发事件来删除该地址 然后出现一个确认框 我创建了一个代码沙箱 https codesandbox io s uselongpress oekx2 f
  • Android 错误锁定模式监听器

    我试图找到一种方法来接收消息每次用户在其 Android 设备上插入错误的锁定模式 老实说 我不知道如何实现这一点 但我猜我应该在后台注册某种服务作为侦听器 但我应该在哪个广播公司注册我的听众 我很抱歉没有适当的术语 可能我的文本没有多大意
  • 日期和时间选择器 Google 应用程序脚本

    是否可以在 GUI 中添加日期和时间选择器框 如果没有 是否可以将两个变量 一个用于日期 选择器 另一个用于时间 数字 组合成一个变量以用作日历的开始时间变量 Thanks 这是一个使用 listBoxes 的可行解决方案 在电子表格中进行
  • Kendo UI Angular - 网格 - 如何转换值?

    如何在 Kendo Grid 上转换以下方面的值 简单的变换如 kendo grid column 字段 值 大写 不起作用 翻译 国际化 再次kendo grid column 字段 值 翻译 不起作用 将类型从整数更改为字符串 以便可以
  • 为什么我会收到此回溯错误?

    这是我得到的错误 Traceback most recent call last File dwload py line 9 in
  • 如何统计数组中连续重复的值?

    我有一个像这样的数组 arr array 1 1 1 2 2 3 3 1 1 2 2 3 我找到了这个功能array count values 但它将对所有相同的值进行分组并计算出现次数 而不考虑连续序列中的中断 result 1 5 re
  • 从 R 中的 apply() 函数返回多个值

    我想从 apply 函数返回多个值并将它们放在 R 中的单独列中 但我不断收到错误 我想做的是 experiments result1 experiments result2 experiments result3 lt apply exp
  • 在 Firebase Hosting SPA + 2 个子文件夹 firebase.json 上配置重定向

    我有一个公共文件夹 例如 public index html landing index html membership index html public index html 是一个 SPA 因此每个对 的请求都应该重写为 index
  • QML屏幕方向锁定

    我需要将屏幕锁定到我正在制作的 Android 应用程序的特定方向 QML 有没有办法做到这一点 谷歌没有给我任何答案 我正在使用 Qt 5 2 您基本上可以使用Screen orientation属性仅供阅读 详细信息请参见以下示例 ht
  • Javascript 中的 HTML 格式化程序

    我一直在寻找一个 HTML 格式化程序来与我正在做的项目结合起来 我需要用 Javascript 编写它 因为我希望在客户端完成格式化 问题是 我尝试过的一些方法效果不佳 例如 http www davidpirek com blog ht
  • GCC跳转表初始化代码生成movsxd并添加?

    当我在 GCC 中编译带有优化的 switch 语句时 它会设置一个像这样的跳转表 fcn sym foo 148 sym foo unsigned int arg1 arg unsigned int arg1 rdi 0x000006e0
  • iPhone:5秒视频拍摄

    我想编写代码 以便当用户按下按钮时 相机启动并录制 5 秒的视频 换句话说 我想要进行视频捕捉 但有时间限制 UIImagePickerController 或框架的其他部分是否有允许执行此操作的内容 谢谢 没有什么可以让您直接执行此操作
  • 无法在android中调用String.isEmpty()

    在我的 Android 应用程序中我无法使用String isEmpty 位于 JDK 1 6 中的函数 Android 2 1 lib在java lang String类中没有这个函数 我尝试将JRE系统库输入到我的项目中 因为它有这个功
  • Swift 4 中的 MenuApp 在 High Sierra 登录时运行?

    我的应用程序是一个菜单应用程序 位于后台运行的菜单附加项中 我试图使其在登录时运行 使用 Swift 4 为 High Sierra 实现此目标的最新推荐实践是什么 根据设计守护进程和服务 https developer apple com
  • Chrome 似乎在打印时错误计算了以 mm 为单位给出的 css 大小

    我想使用 css 打印到 A4 A4 高 297 毫米 顶部边距 6 毫米 底部边距 6 毫米 内容应留出 285 毫米 In IE 11 I have to set page borders to 6 mm and disable hea
  • Xamarin跨平台中的全局异常处理

    您能否让我知道如何处理 Xamarin 跨平台项目中的全局异常 不导致应用程序崩溃 据我所知 没有 Xamarin Forms 方法可以做到这一点 您需要连接 Android 和 iOS 您可以做的是创建一种以相同方式处理它们的方法 A n
  • 使用 jquery 启用禁用 ASP.NET 验证控件

    请指导我如何从客户端使用 jQuery 启用或禁用 ASP NET 验证控件 需要这样做才能在按下按钮时完成验证 thanks 使用 javascript 非常简单 只需要适应使用 JQuery http ajaxblog com arch
  • 使用地标比较面孔?

    假设对于每个检测到的人脸 我有一组像这样的地标 来自人脸检测 API 的结果 eye left x 112 3 y 210 3 eye right x 217 5 y 205 5 nose x 168 6 y 269 7 mouth l x
  • 如果另一个互斥参数为 true,则将默认值设置为 false

    我意识到这很像使用 argparse 模块在 Python 中设置两个互斥选项的默认选项 https stackoverflow com questions 9365486 setting default option in python