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

【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 argparseparser = 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.mzph.cn/web/41189.shtml

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

相关文章

pdf怎么转换成图片格式文件,pdf文档怎么转换成图片格式

在数字化时代,pdf文件转换成图片格式是一种常见的操作,无论是在工作还是日常生活中,我们总会遇到需要将pdf文件转换为图片的需求。这可能是因为图片格式更易于分享、展示或编辑。那么,如何高效地将pdf转换成图片呢?本文…

图神经网络实战(16)——经典图生成算法

图神经网络实战(16)——经典图生成算法 0. 前言1. 图生成技术2. Erdős–Rnyi模型3. 小世界模型小结系列链接 0. 前言 图生成算法是指用于创建模拟图或网络结构的算法,这些算法可以根据特定的规则和概率分布生成具有特定属性的图&#xff0c…

将大型语言模型模块化打造协作智能体

B UILDING C OOPERATIVE E MBODIED A GENTS MODULARLY WITH L ARGE L ANGUAGE M ODELS 论文链接: https://arxiv.org/abs/2307.02485https://arxiv.org/abs/2307.02485 1.概述 在去中心化控制及多任务环境中,多智能体合作问题因原始感官观察、高昂…

【机器学习】机器学习重塑广告营销:精准触达,高效转化的未来之路

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀目录 📒1. 引言📙2. 机器学习基础与广告营销的结合🧩机器学习在广告营销中的核心应用领域🌹用…

【React】React18 Hooks 之 useReducer

目录 useReducer案例1:useReducer不带初始化函数案例2:useReducer带初始化函数注意事项1:dispatch函数不会改变正在运行的代码的状态注意事项2:获取dispatch函数触发后 JavaScript 变量的值注意事项3:触发了reducer&am…

Spring Boot集成olingo快速入门demo

1.什么是olingo? Apache Olingo 是个 Java 库,用来实现 Open Data Protocol (OData)。 Apache Olingo 包括服务客户端和 OData 服务器方面。 Open Data Protocol (开放数据协议,OData) 是用来查询和更新数据的一种W…

【吊打面试官系列-MyBatis面试题】MyBatis 实现一对多有几种方式,怎么操作的?

大家好,我是锋哥。今天分享关于 【MyBatis 实现一对多有几种方式,怎么操作的?】面试题,希望对大家有帮助; MyBatis 实现一对多有几种方式,怎么操作的? 有联合查询和嵌套查询。联合查询是几个表联合查询,只查询一次,通过…

观察矩阵(View Matrix)、投影矩阵(Projection Matrix)、视口矩阵(Window Matrix)及VPM矩阵及它们之间的关系

V表示摄像机的观察矩阵(View Matrix),它的作用是把对象从世界坐标系变换到摄像机坐标系。因此,对于世界坐标系下的坐标值worldCoord(x0, y0, z0),如果希望使用观察矩阵VM将其变换为摄像机坐标系下的坐标值localCoord(x…

Node.js-path 模块

path 模块 path 模块提供了 操作路径 的功能,如下是几个较为常用的几个 API: 代码实例: const path require(path);//获取路径分隔符 console.log(path.sep);//拼接绝对路径 console.log(path.resolve(__dirname, test));//解析路径 let pa…

vulhub-activemq(CVE-2016-3088)

在 Apache ActiveMQ 5.12.x~5.13.x 版本中,默认关闭了 fileserver 这个应用(不过,可以在conf/jetty.xml 中开启);在 5.14.0 版本后,彻底删除了 fileserver 应用。【所以在渗透测试过程中要确定好 ActiveMQ …

数据结构1:C++实现变长数组

数组作为线性表的一种,具有内存连续这一特点,可以通过下标访问元素,并且下标访问的时间复杂的是O(1),在数组的末尾插入和删除元素的时间复杂度同样是O(1),我们使用C实现一个简单的边长数组。 数据结构定义 class Arr…

华为OD机试 - 来自异国的客人(Java 2024 D卷 100分)

华为OD机试 2024D卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…

新手教学系列——前后端分离API优化版

在之前的文章《Vue 前后端分离开发:懒人必备的API SDK》中,我介绍了通过Object对象自动生成API的方法。然而,之前的代码存在一些冗余之处。今天,我将分享一个改进版本,帮助你更高效地管理API。 改进版API SDK 首先,让我们来看一下改进后的代码: import request from …

【反悔贪心 反悔堆】1642. 可以到达的最远建筑

本文涉及知识点 反悔贪心 反悔堆 LeetCode1642. 可以到达的最远建筑 给你一个整数数组 heights ,表示建筑物的高度。另有一些砖块 bricks 和梯子 ladders 。 你从建筑物 0 开始旅程,不断向后面的建筑物移动,期间可能会用到砖块或梯子。 当…

MATLAB 2024b 更新了些什么?

MATLAB 2024b版本已经推出了预览版,本期介绍一些MATLAB部分的主要的更新内容。 帮助浏览器被移除 在此前的版本,当我们从MATLAB中访问帮助文档时,默认会通过MATLAB的帮助浏览器(Help browser)。 2024b版本开始&…

【Unity数据交互】如何Unity中读取Ecxel中的数据

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 专栏交流🧧&…

医院挂号系统小程序的设计

管理员账户功能包括:系统首页,个人中心,患者管理,医生管理,专家信息管理,科室管理,预约信息管理,系统管理 微信端账号功能包括:系统首页,专家信息&#xff0…

数据结构算法-排序(一)-冒泡排序

什么是冒泡排序 冒泡排序:在原数组中通过相邻两项元素的比较,交换而完成的排序算法。 算法核心 数组中相邻两项比较、交换。 算法复杂度 时间复杂度 实现一次排序找到最大值需要遍历 n-1次(n为数组长度) 需要这样的排序 n-1次。 需要 (n-1) * (n-1) —…

【Linux进阶】文件系统7——文件系统简单操作

1.磁盘与目录的容量 现在我们知道磁盘的整体数据是在超级区块中,但是每个文件的容量则在inode 当中记载。 那在命令行模式下面该如何显示这几个数据?下面就让我们来谈一谈这两个命令: df:列出文件系统的整体磁盘使用量&#xf…

Poker Game, Run Fast

Poker Game, Run Fast 扑克&#xff1a;跑得快 分门别类&#xff1a; 单张从小到大默认 A < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 < J < Q < K 跑得快&#xff1a;单张从小到大 3 < 4 < 5 < 6 < 7 < 8 < 9 < 10 &…