【Python】一文向您详细介绍 argparse中 action=‘store_true’ 的作用

news2024/11/27 18:49:33

【Python】一文向您详细介绍 argparse中 action=‘store_true’ 的作用


 
下滑即可查看博客内容
在这里插入图片描述

🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇

🎓 博主简介985高校的普通本硕,曾有幸发表过人工智能领域的 中科院顶刊一作论文,熟练掌握PyTorch框架

🔧 技术专长: 在CVNLP多模态等领域有丰富的项目实战经验。已累计提供近千次定制化产品服务,助力用户少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于深度学习、PyTorch、Python相关的实用内容。已发表原创文章600余篇,代码分享次数逾九万次

💡 服务项目:包括但不限于科研辅导知识付费咨询以及为用户需求提供定制化解决方案

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

🌵文章目录🌵

  • 📚 一、认识`argparse`与`action='store_true'`
      • 示例场景
  • 🚀 二、`action='store_true'`的基本用法
  • 💡 三、完整命令行指令示例
  • 🔍 四、举一反三:`action='store_false'`
      • 示例
  • 📚 五、`argparse`的更多应用场景
      • 位置参数
      • 互斥参数组
  • 🚀 六、总结与展望

下滑即可查看博客内容

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  

📚 一、认识argparseaction='store_true'

在Python中,argparse模块是处理命令行参数的标准库之一,它让编写用户友好的命令行接口变得简单。通过argparse,程序可以轻松地读取命令行参数,并根据这些参数执行不同的操作。而action='store_true'argparse中一个非常实用的参数,它允许我们定义一个标志(flag),当这个标志在命令行中被指定时,自动将对应的变量设置为True

示例场景

假设我们正在编写一个脚本,该脚本默认执行某个操作,但用户可以通过命令行参数来启用额外的功能。这时,action='store_true'就显得非常有用。


🚀 二、action='store_true'的基本用法

下面是一个简单的例子,演示了如何在argparse中使用action='store_true'

import argparse

# 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description='示例脚本,展示 action=store_true 的用法。')

# 添加一个标志 --verbose,当它被指定时,verbose 变量将被设置为 True
parser.add_argument('--verbose', help='启用详细模式', action='store_true')

# 解析命令行参数
args = parser.parse_args()

# 根据 verbose 的值执行不同的操作
if args.verbose:
    print('详细模式已启用!')
else:
    print('执行默认操作。')

在这个例子中,如果用户运行脚本时没有指定--verbose标志,那么args.verbose将会是False(因为action='store_true'的默认值是False),脚本将执行默认操作。如果用户指定了--verbose(如python script.py --verbose),则args.verbose会被设置为True,脚本将输出“详细模式已启用!”。


💡 三、完整命令行指令示例

假设上述脚本保存为script.py,那么完整的命令行指令如下:

  • 执行默认操作(不启用详细模式):

    python script.py
    

    输出将会是:“执行默认操作。”

  • 启用详细模式:

    python script.py --verbose
    

    输出将会是:“详细模式已启用!”


🔍 四、举一反三:action='store_false'

action='store_false'argparse模块中另一个实用的参数动作,它与action='store_true'相对应,但行为相反。当在命令行中指定了与action='store_false'相关联的标志时,相应的变量会被设置为False。这在需要明确禁用某些默认开启的功能时特别有用。

示例

假设我们有一个脚本,它默认会打印一些调试信息,但我们想要通过命令行参数来禁用这些调试信息。

import argparse

parser = argparse.ArgumentParser(description='示例脚本,展示 action=store_false 的用法。')

# 添加一个标志 --no-debug,当它被指定时,debug 变量将被设置为 False
parser.add_argument('--no-debug', help='禁用调试信息', action='store_false')

# 注意:我们没有为 debug 变量设置默认值,但根据 argparse 的规则,action=store_false 的默认值实际上是 True
# 如果想要明确设置默认值,可以使用 default=True 参数
# parser.add_argument('--no-debug', help='禁用调试信息', action='store_false', default=True)

# 解析命令行参数
args = parser.parse_args()

# 如果 args.no_debug 为 False(即 --no-debug 没有被指定),则打印调试信息
if not args.no_debug:
    print('调试信息:这是调试信息的示例。')
else:
    print('调试信息已禁用。')

在这个例子中,如果用户没有指定--no-debug标志,则args.no_debug的值为True(因为action='store_false'的“未指定”状态被视为True,但这通常不是我们想要的行为,所以更推荐使用default=True来明确设置默认值),脚本将打印调试信息。如果用户指定了--no-debug,则args.no_debug会被设置为False,脚本将输出“调试信息已禁用。”。然而,为了清晰和避免混淆,推荐总是为使用action='store_false'的参数明确设置default=True


📚 五、argparse的更多应用场景

argparse模块不仅仅局限于简单的标志(flag)处理,它还可以处理位置参数(positional arguments)、互斥参数组(mutually exclusive groups)、子命令(subcommands)等复杂场景。

位置参数

位置参数是命令行中按照特定顺序出现的参数,它们不需要前缀(如--)。

parser.add_argument('filename', help='要处理的文件名')

互斥参数组

互斥参数组允许你定义一组参数,这些参数中一次只能指定一个。

group = parser.add_mutually_exclusive_group()
group.add_argument('--verbose', action='store_true')
group.add_argument('--quiet', action='store_true')

🚀 六、总结与展望

通过本文,我们深入了解了argparse模块中action='store_true'action='store_false'的作用,以及如何在命令行中具体使用它们。我们还通过示例展示了argparse的基本用法和进阶用法,包括位置参数、互斥参数组等。这些功能使得argparse成为Python中处理命令行参数的首选库。

展望未来,随着Python在数据科学、机器学习、Web开发等领域的广泛应用,命令行工具的重要性日益凸显。掌握argparse模块,将帮助我们编写出更加用户友好、功能强大的命令行工具。同时,随着Python生态的不断发展,我们也可以期待argparse模块本身能够继续进化,为我们提供更多便利和强大的功能。

最后,希望本文能够帮助读者更好地理解和使用argparse模块,从而编写出更加优秀的Python脚本和命令行工具。🎉

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

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

相关文章

自动控制:前馈控制

自动控制:前馈控制 前馈控制是一种在控制系统中通过预先计算和调整输入来应对已知扰动或变化的方法。相比于反馈控制,前馈控制能够更快速地响应系统的变化,因为它不依赖于系统输出的反馈信号。前馈控制的应用在工业过程中尤为广泛&#xff0…

DAMA学习笔记(四)-数据建模与设计

1.引言 数据建模是发现、分析和确定数据需求的过程,用一种称为数据模型的精确形式表示和传递这些数据需求。建模过程中要求组织发现并记录数据组合的方式。数据常见的模式: 关系模式、多维模式、面向对象模式、 事实模式、时间序列模式和NoSQL模式。按照描述详细程度…

染色の树-美团2023笔试(codefun2000)

题目链接 染色の树-美团2023笔试(codefun2000) 题目内容 输入描述 输出描述 输出一行一个整数表示根节点的值。 样例1 输入 3 1 1 2 2 2 输出 0 题解1 #include<bits/stdc.h> using namespace std;const int N 50005;int n, c[N];vector<int> edge[N];int dfs(…

【pytorch20】多分类问题

网络结构以及示例 该网络的输出不是一层或两层的&#xff0c;而是一个十层的代表有十分类 新建三个线性层&#xff0c;每个线性层都有w和b的tensor 首先输入维度是784&#xff0c;第一个维度是ch_out,第二个维度才是ch_in(由于后面要转置)&#xff0c;没有经过softmax函数和…

基于java+springboot+vue实现的校园外卖服务系统(文末源码+Lw)292

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;外卖信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广…

11.常见的Bean后置处理器

CommonAnnotationBeanPostProcessor (Resource PostConstructor PreDestroy) AutowiredAnnotationBeanPostProcessor (Autowired Value) GenericApplicationContext是一个干净的容器&#xff0c;它没有添加任何的PostProcessor处理器。 调用GenericApplicationContext.refre…

MSPM0G3507——编码器控制速度

绿色设置的为目标值100&#xff0c;红色为编码器实际数据 。 最后也是两者合在了一起&#xff0c;PID调试成功。 源码直接分享&#xff0c;用的是CCStheia&#xff0c;KEIL打不开。大家可以看一下源码的思路&#xff0c;PID部分几乎不用改 链接&#xff1a;https://pan.baid…

CSS【详解】长度单位 ( px,%,em,rem,vw,vh,vmin,vmax,ex,ch )

px 像素 pixel 的缩写&#xff0c;即电子屏幕上的1个点&#xff0c;以分辨率为 1024 * 768 的屏幕为例&#xff0c;即水平方向上有 1024 个点&#xff0c;垂直方向上有 768 个点&#xff0c;则 width:1024px 即表示元素的宽度撑满整个屏幕。 随屏幕分辨率不同&#xff0c;1px …

HCIE之IPV6和OSPFv6(十四)

IPV6 1、IPv6基础1.1 Ipv6地址静态配置、Eui 641.1.1 Ipv6地址静态配置1.1.2、Ipv6地址计算总结1.1.2.1、IEEE eui 64计算1.1.2.1.1、作用1.1.2.1.2、计算方法1.1.2.1.3、计算过程 1.1.2.2、被请求加入的组播组地址计算&#xff08;三层&#xff09;1.1.2.2.1、 作用1.1.2.2.2、…

数据结构与算法笔记:实战篇 - 剖析微服务接口鉴权限流背后的数据结构和算法

概述 微服务是最近几年才兴起的概念。简单点将&#xff0c;就是把复杂的大应用&#xff0c;解耦成几个小的应用 。这样做的好处有很多。比如&#xff0c;这样有利于团队组织架构的拆分&#xff0c;比较团队越大协作的难度越大&#xff1b;再比如&#xff0c;每个应用都可以独立…

BAT-致敬精简

什么是bat bat是windows的批处理程序&#xff0c;可以批量完成一些操作&#xff0c;方便快速。 往往我们可以出通过 winR键来打开指令窗口&#xff0c;这里输入的就是bat指令 这里就是bat界面 节约时间就是珍爱生命--你能想象以下2分钟的操作&#xff0c;bat只需要1秒钟 我…

深入理解JS逆向代理与环境监测

博客文章&#xff1a;深入理解JS逆向代理与环境监测 1. 引言 首先要明确JavaScript&#xff08;JS&#xff09;在真实网页浏览器环境和Node.js环境中有很多使用特性的区别。尤其是在环境监测和对象原型链的检测方面。本文将探讨如何使用JS的代理&#xff08;Proxy&#xff09…

分数的表示和运算方法fractions.Fraction()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 分数的表示和运算方法 fractions.Fraction() 选择题 以下代码三次输出的结果分别是&#xff1f; from fractions import Fraction a Fraction(1, 4) print(【显示】a ,a) b Fraction(1, 2…

免费的鼠标连点器电脑版教程!官方正版!专业鼠标连点器用户分享教程!2024最新

电脑技术的不断发展&#xff0c;许多用户在日常工作和娱乐中&#xff0c;需要用到各种辅助工具来提升效率或简化操作&#xff0c;而电脑办公中&#xff0c;鼠标连点器作为一种能够模拟鼠标点击的软件&#xff0c;受到了广大用户的青睐。本文将为大家介绍一款官方正版的免费鼠标…

C++_STL---list

list的相关介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 list的底层是带头双向循环链表结构&#xff0c;链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素。…

WAIC | 上海人形机器人创新中心 | 最新演讲 | 详细整理

前言 笔者看了7月4号的人形机器人与具身智能发展论坛的直播&#xff0c;并在7月5日到了上海WAIC展会现场参观。这次大会的举办很有意义&#xff0c;听并看了各家的最新成果&#xff0c;拍了很多照片视频&#xff0c;部分演讲也录屏了在重复观看学习 稍后会相继整理创立穹彻智…

使用RAID与LVM磁盘阵列技术

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 一、RAID磁盘冗余阵列 1、部署磁盘整列 2、损坏磁盘阵列及修复 3、磁盘阵列备份盘 4、删除磁盘阵列 二、LVM逻辑卷管理器 致谢 一、RAID…

linux中可执行文件在运行过程中为什么不能拷贝覆盖

对于一个普通的文件&#xff0c;假如有两个文件&#xff0c;分别是file和file1&#xff0c;我们使用 cp file1 file的方式使用file1的内容来覆盖file的内容&#xff0c;这样是可以的。 但是对于可执行文件来说&#xff0c;当这个文件在执行的时候&#xff0c;是不能通过cp的方…

Python 算法交易实验76 QTV200日常推进

说明 最近实在太忙&#xff0c; 没太有空推进这个项目&#xff0c;我想还是尽量抽一点点时间推进具体的工程&#xff0c;然后更多的还是用碎片化的时间从整体上对qtv200进行设计完善。有些结构的问题其实是需要理清的&#xff0c;例如&#xff1a; 1 要先基于原始数据进行描述…

【ROS2】初级:客户端-编写一个简单的服务和客户端(Python)

目标&#xff1a;使用 Python 创建并运行服务节点和客户端节点。 教程级别&#xff1a;初学者 时间&#xff1a;20 分钟 目录 背景 先决条件 任务 1. 创建一个包2. 编写服务节点3. 编写客户端节点4. 构建并运行 摘要 下一步 相关内容 背景 当节点通过服务进行通信时&#xff0c…