[python] argparse怎么指定bool类型?

前述

最近在写脚本的时候想要实现一个if 操作,通过用户输入。确定要不要启用某个语句。
非常自然的就是使用python的argparse包,但是发现了一个陷阱,记录下。

陷阱

argparse.ArgumentParser() 可以指定输入类型,我可以设定为bool,但是发现这个不太能用,具体为如果我设定类型为bool,不管我输入什么,输出都是True
具体代码如下:

import argparsedef main():parser = argparse.ArgumentParser()parser.add_argument('--o1', type=bool, default=False)args = parser.parse_args()if args.o1: print("o1 is True")else:print("o1 is False")if __name__ == '__main__':main()

不指定的话默认为Flase,输出如下
在这里插入图片描述
如果指定True的话,输出为True
在这里插入图片描述
好像没啥问题,但是如果指定False,却出现了True
在这里插入图片描述
因此这种这种方式不太可行,任何指定参数的行为都会被判定为True。

正确做法

使用action='store_true'
对比代码如下:

import argparsedef main():parser = argparse.ArgumentParser()parser.add_argument('--o1', type=bool, default=False)parser.add_argument('--o2', action='store_true', default=False)args = parser.parse_args()if args.o1: print("o1 is True")else:print("o1 is False")if args.o2:print("o2 is True")else:print("o2 is False")if __name__ == '__main__':main()

如果没有指定,都是False
在这里插入图片描述
如果指定了o2,直接变成True,也不需要输入False和True了。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/web/81775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust 学习笔记:迭代器

Rust 学习笔记:迭代器 Rust 学习笔记:迭代器Iterator trait 和 next 方法使用迭代器的方法生成其他迭代器的方法使用闭包捕获它们的环境 Rust 学习笔记:迭代器 在 Rust 中,迭代器负责遍历每个项的逻辑。迭代器是懒惰的&#xff0…

【深度剖析】义齿定制行业数字化转型模式创新研究(上篇2:痛点和难点分析)

数字化转型正在重塑义齿行业的生态格局,但也面临技术融合与模式变革的深层挑战。当前,义齿定制行业正处于从传统手工制造向全流程数字化制造转型的关键阶段。3D扫描、CAD/CAM(计算机辅助设计与制造)、3D打印等技术的广泛应用,显著提升了义齿制作的精度和效率。传统石膏模型…

window安装nginx

步骤1:下载Nginx for Windows​ 访问Nginx官网下载页面:https://nginx.org/en/download.html 在​​Stable version​​(稳定版)下找到Windows版本,点击下载.zip文件(如 nginx-1.28.0.zip) 步…

气象算法工程师学习路径

目录 🌤️ 气象学与数值预报基础课程🤖 气象人工智能与数据分析课程📘 进阶与实战课程推荐🧭 学习建议与路径规划 如果希望成为一名气象算法工程师,并寻找深入浅出、理论与实践结合的学习资源,以下是为你精…

回调函数的理解

int yuxiangrousi 0; // 全局变量:鱼香肉丝(酱油量)// 回调函数:妈妈处理酱油(将酱油加入鱼香肉丝) void mother_callback(int new_jiangyou) {yuxiangrousi new_jiangyou; // 把酱油放进鱼香肉丝 }// 孩…

多部手机连接同一wifi的ip一样吗?如何更改ip

通常情况下,多部手机连接同一个WiFi时,它们的IP地址是各不相同的(在局域网内)。但是,从互联网(外网)的角度看,它们共享同一个公网IP地址。让我详细解释一下,并说明如何更…

环境温度通过H2A.Zub和H3K27me3动态调控拟南芥细胞命运决定

2025年4月22日,中国科学院遗传与发育生物学研究所肖军研究组在Developmental Cell在线发表了题为Dynamic control of H2A.Zub and H3K27me3 by ambient temperature during cell fate determination in Arabidopsis的研究论文,本研究综合运用ChIP-seq、C…

2024 吉林 CCPC

文章目录 2024 吉林 CCPCL. Recharge(思维、分配)G. Platform Game(模拟)E. Connect Components (排序、思维)D. Parallel Lines 2024 吉林 CCPC 题目链接: Dashboard - The 2024 CCPC National Invitational Contest (Changchun) , The 17…

day13 leetcode-hot100-24(链表3)

234. 回文链表 - 力扣(LeetCode) 1.转化法 思路 将链表转化为列表进行比较 复习到的知识 arraylist的长度函数:list.size() 具体代码 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode ne…

Vim文本编辑器快捷键用法以及简单介绍

目录 vim文本编辑器 简介: 语法: vim模式介绍: 模式切换: 用法: 编辑模式: 一般模式: 命令模式: vim文本编辑器 简介: 在命令行界面下,最常用的文本…

从 0 到 1:Spring Boot 与 Spring AI 深度实战(基于深度求索 DeepSeek)

在人工智能技术与企业级开发深度融合的今天,传统软件开发模式与 AI 工程化开发的差异日益显著。作为 Spring 生态体系中专注于 AI 工程化的核心框架,Spring AI通过标准化集成方案大幅降低 AI 应用开发门槛。本文将以国产大模型代表 ** 深度求索&#xff…

[Windows] 摸鱼小工具:隐藏软件(重制版)

由吾爱大神写的摸鱼工具: 数据存放路径为C:\Users\用户名\AppData\Local\HideSoft,如果不想用时,删除软件及此路径下的HideSoft文件夹。如添加了开机启动,删除启动菜单文件夹的快捷方式即可,或者删除前在软件中取消设置…

C++ 判断文件的编码类型

大多数文本编辑器,都会在文本文件的头部插入一部分特殊的字节,用于辅助文本编辑器来判断该文件的字符集编码类型。 如:记事本 目前支持的字符集类型,通常为三种: Unicode、UTF8、UnicodeBIG、CP_ACP(默认…

时间序列噪声模型分析软件推荐与使用经验

最近在论文大修2024年投稿的一篇文章,大修了2轮,最后一次还是重新投稿,其中有一个问题一直被审稿人怼,他认为我计算时间序列的趋势的时候,没有考虑时间的相关性,即对噪声模型的估计不合理,会影响…

【redis实战篇】第六天

摘要: 本文介绍了基于Redis的秒杀系统优化方案,主要包含两部分:1)通过Lua脚本校验用户秒杀资格,结合Java异步处理订单提升性能;2)使用Redis Stream实现消息队列处理订单。方案采用Lua脚本保证库…

【Java Web】速通HTML

参考笔记: JavaWeb 速通HTML_java html页面-CSDN博客 目录 一、前言 1.网页组成 1 结构 2 表现 3 行为 2.HTML入门 1 基本介绍 2 基本结构 3. HTML标签 1 基本说明 2 注意事项 4. HTML概念名词解释 二、HTML常用标签汇总 + 案例演示 1. 字体标签 font (1)定义 (2)案例 2…

Oracle/openGauss中,DATE/TIMESTAMP与数字日期/字符日期比较

ORACLE 运行环境 openGauss 运行环境 0、前置知识 ORACLE:DUMP()函数用于返回指定表达式的数据类型、字节长度及内部存储表示的详细信息 SELECT DUMP(123) FROM DUAL; -- Typ2 Len3: 194,2,24 SELECT DUMP(123) FROM DUAL;-- Typ96 Len3: 49,50,51 -- ASCII值&am…

[学习]C++ 模板探讨(代码示例)

C 模板探讨 文章目录 C 模板探讨一、模板基础概念二、函数模板三、类模板1. 类模板的定义与使用2. 成员函数模板3. 类模板的静态成员与继承 四、模板进阶特性1. 非类型模板参数2. 可变参数模板(Variadic Templates)3. 模板元编程(TMP&#xf…

人工智能-训练AI模型涉及多个步骤

训练AI模型涉及多个步骤,包括数据预处理、选择合适的模型、训练模型以及评估模型性能。下面是一个详细的流程,以常见的机器学习任务——分类问题为例,展示如何使用Python中的scikit-learn库来训练一个简单的AI模型。 步骤 1: 导入所需的库 …

LVS+Keepalived 高可用

目录 一、核心概念 1. LVS(Linux Virtual Server) 2. Keepalived 二、高可用架构设计 1. 架构拓扑图 2. 工作流程 三、部署步骤(以 DR 模式为例) 1. 环境准备 2. 主 LVS 节点配置 (1)安装 Keepali…