【python】python中的argparse模块,教你如何自定义命令行参数

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:python入门必备,基础语法到进阶实战教学
景天的主页:景天科技苑

文章目录

  • 一、argparse模块简介
    • 1.argparse定义的四个步骤
    • 2. 用法举例
  • 二、相关方法的参数详解
    • 1.add_argument() 方法
    • 2. 解析命令行的参数:parse_args()

一、argparse模块简介

python中的argparse模块,是 Python内置的用于命令项选项与参数解析的模块,argparse 模块可以让人轻松编写用户友好的命令行接口,用于命令行参数的解析,能够帮助程序员为模型定义参数
这意味着我们无需在代码中手动为变量赋值,而是可以直接在命令行中向程序传递相应的参数,再由变量去读取这些参数。

1.argparse定义的四个步骤

  • 导入argparse包 ——import argparse
  • 创建一个命令行解析器对象 ——创建 ArgumentParser() 对象
  • 给解析器添加命令行参数 ——调用add_argument() 方法添加参数
  • 解析命令行的参数 ——使用 parse_args() 解析添加的参数

2. 用法举例

# 导入库
import argparse# 1. 定义命令行解析器对象
parser = argparse.ArgumentParser(description='Usage of argparse')# 2. 添加命令行参数,可以简写,也可以写全称
parser.add_argument('-u','--username', type=str, default="jingtian")
parser.add_argument('-p','--password', type=str, default="123456")# 3. 从命令行中结构化解析参数
args = parser.parse_args()
print(args)#通过args对象.参数名,获取命令行参数值
username = args.username
pwd = args.password
print(f"解析出的参数,用户名:{username},密码:{pwd}")

我们定义了两个命令行参数 --username --password 。都有str类型的默认值
在这里插入图片描述

我们用朴实无华的大白话对上面代码进行解读,首先我们导入argparse这个包,然后包中的ArgumentParser类生成一个parser对象(其中的description对参数解析器的作用进行描述)
当我们在命令行显示帮助信息的时候会看到description描述的信息。
例如:python myargparse.py -h
在这里插入图片描述

接下来我们通过对象的add_argument函数来增加参数。
这里我们增加了username和password两个参数,最后采用对象的parse_args获取解析的参数。
命令行我们可以自己指定参数值,打印结果如下图所示:
如果不加参数,则使用我们设置的默认值
./myargparse.py
在这里插入图片描述

我们也可以在命令行自定义
./myargparse.py -u tianya -p 123
在这里插入图片描述

二、相关方法的参数详解

1.add_argument() 方法

(1)添加命令行参数
给一个 ArgumentParser 添加程序参数信息,是通过调用 add_argument() 方法完成的。通常,这些调用指定 ArgumentParser 如何获取命令行字符串并将其转换为对象。
这些信息在 parse_args() 调用时被存储在ArgumentParser实例化对象中,以供后续使用。add_argument() 方法定义如何解析命令行参数的呢?

(2)add_argument() 方法定义如何解析命令行参数
parser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][,choices][, required][, help][, metavar][, dest])

参数详解:

name or flags: 普通参数或flag参数选项参数的名称或标签,例如 username 或者 -u, --username。Flag参数不需要指定参数值,只需要带有参数名即可。
action: 命令行遇到flags参数时的动作。有两个常见的动作,store_true:设定flag参数为true;store_false:设定flag参数为False。注意:如果直接运行程序,默认不读取该变量,要使用必须要进行传参,例如:python myargparse.py --username
nargs: 应该读取的命令行参数个数,可以是具体的数字,或者是?号,当不指定值时对于 Positional argument 使用 default,对于 Optional argument 使用 const;或者是 * 号,表示 0 或多个参数;或者是 + 号表示 1 或多个参数。
default: 不指定参数时该参数的默认值。
type: 命令行参数应该被转换成的数据类型。
required: 是否为必选参数或可选参数。
help: 参数的帮助信息。
metavar: 在 usage 说明中的参数名称,对于必选参数,默认就是参数名称,对于可选参数默认是全大写的参数名称。
dest: 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.
choices: 参数可允许的值的一个容器。
const: action 和 nargs 所需要的常量值。
store_const:表示赋值为const;
append:将遇到的值存储成列表,也就是如果参数重复则会保存多个值;
append_const:将参数规范中定义的一个值保存到一个列表;
count:存储遇到的次数;此外,也可以继承 argparse.Action 自定义参数解析;

2. 解析命令行的参数:parse_args()

ArgumentParser对象通过 parse_args() 方法解析命令行的参数。它将检查命令行中每个参数,转换为适当的数据类型,然后调用相应的操作,并把参数结构化后存放在对象args中。
args = parser.parse_args()

在这里插入图片描述

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

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

相关文章

intellij idea中build project与build module以及rebuild module的区别与联系

IntelliJ IDEA是一个功能强大的Java集成开发环境(IDE)。它提供了几个与构建相关的操作,包括: Build Project: - 这将构建整个项目,包括其中的所有模块。 - 它将编译所有已修改的源文件,并重新生成输出文件(如.class文件)。 - 这通常用于确保整个项目的代码是最新的,并且可以正…

Openssl X509证书从HexStream中解析

整体思路 从hex 转换成字节流 然后从字节流中进行解析 You have access to the raw certificate in memory. In the case that you have access to the raw encoding of the certificate in memory, you can parse it as follows. This is useful if you have stored raw cer…

【Pip】pip 安装第三方包异常:[SSL:CERTIFICATE_VERIFY_FAILED]解决方案

pip 安装第三方包异常:[SSL:CERTIFICATE_VERIFY_FAILED] 大家好 我是寸铁👊 总结了一篇pip 安装第三方包异常:[SSL:CERTIFICATE_VERIFY_FAILED]✨ 喜欢的小伙伴可以点点关注 💝 报错 今天在安装第三方包时报错如下: 解决方案 本质上是需要指定信任的镜像…

开启异步线程的方法

1,开启异步线程,在启动类上加注解: 2,自定义线程池: Configuration public class PromotionConfig {Beanpublic Executor generateExchangeCodeExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExec…

搜维尔科技:【案例分享】Xsens用于工业制造艺术创新设计平台

用户名称:北京理工大学 主要产品:Xsens MVN Awinda惯性动作捕捉系统 在设计与艺术学院的某实验室内,通过Xsens惯性动作捕捉,对人体动作进行捕捉,得到人体三维运动数据,将捕到的数据用于后续应用研究。…

蓝桥杯备战9.拼数

P1012 [NOIP1998 提高组] 拼数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 这道题作对了&#xff0c;但是题解看到更好的 我写的史 #include<bits/stdc.h> #define endl \n #define int long long using namespace std; const int N 2e710,M 1e310; int a[N],h[…

x_t格式介绍

x_t格式 X_T格式&#xff0c;通常被称为Parasolid文件格式&#xff0c;是一种用于3D CAD数据交换的文件格式。Parasolid本身是一个几何建模内核&#xff0c;由Siemens PLM Software开发和维护&#xff0c;广泛应用于许多主流CAD、CAM、CAE系统中&#xff0c;如SolidWorks、Sol…

小心电子合同这个坑:手写签名图片

一、引言 在数字化浪潮的推动下&#xff0c;电子合同因其便捷性和高效性受到广泛应用。然而&#xff0c;在使用电子合同的过程中&#xff0c;一个看似简单的签名方式——手写签名图片&#xff0c;却可能带来意想不到的法律风险。本文将详细解析这一陷阱&#xff0c;并为大家提…

单播、组播、广播

​​​​​​ 概念 单播&#xff08;Unicast&#xff09; 单播是网络中最常用、最基本的通信方式。在单播通信中&#xff0c;数据包从一个节点发送到特定的另一个节点。换句话说&#xff0c;发送端和接收端之间建立一对一的连接&#xff0c;然后进行数据传输。 例如&#x…

PMP证书好考吗?

PMP新考纲还颠覆了自己旧有的五大知识领域&#xff0c;将原来的五大过程组整合成新领域中过程的一部分&#xff0c;提出了新的商业环境、过程、人员三大知识领域。 最关键的是&#xff0c;在新考纲中明确写到&#xff1a; 重要注意事项。通过工作任务分析开展的研究证实&…

将H264文件封装为mp4文件的三种方法(三种库)

​ 1、使用MP4v2库 前提&#xff1a;交叉编译好RV1106的工具链 &#xff08;1&#xff09;下载路径&#xff1a;MP4v2 | mp4v2 源码&#xff08;2&#xff09;解压后修改CMakeLists.txtoption(BUILD_UTILS "Build MP4v2 auxiliary tools" OFF)&#xff08;3&#x…

PX4FMU和PX4IO最底层启动过程分析(上)

PX4FMU和PX4IO最底层启动过程分析&#xff08;上&#xff09; 主处理器和协处理器的固件烧写和运行过程 PX4FMU&#xff1a;各种传感器数据读取、姿态解算、PWM控制量的计算、与PX4IO通信。负责飞控最主要的工作。 PX4IO&#xff08;STM32F103&#xff09;&#xff1a;为PIXHA…

大模型面试常考知识点2

文章目录 1. LLM推理attention优化技术KV CachePageAttention显存优化MHA\GQA\MQA优化技术FlashAttention优化技术稀疏Attention1. Atrous Self Attention2. Local Self Attention3. Sparse Self Attention 2. LLM数据处理关键去重多样性保证构造扩充数据充分利用数据 参考文献…

Vue Router activated deactivated 路由守卫

在Vue.js应用程序中&#xff0c;Vue Router是一个重要的库&#xff0c;用于管理应用程序的路由。Vue Router提供了一些路由守卫&#xff0c;这些守卫允许我们在导航过程中执行一些操作。其中&#xff0c;activated和deactivated路由守卫是在路由切换时触发的两个关键守卫。本文…

【电路笔记】-无源高通滤波器

无源高通滤波器 文章目录 无源高通滤波器1、概述2、一阶高通滤波器的频率响应3、高通滤波器示例4、二阶高通滤波器5、RC 差异化因素高通滤波器与低通滤波器电路完全相反,因为这两个组件已互换,滤波器输出信号现在从电阻器两端获取。 1、概述 由于低通滤波器只允许低于其截止…

Shell编程之循环语句

目录 1.for循环语句&#xff08;遍历循环&#xff09; 1.1 for语句的结构 1.2 for语句的执行流程 1.3 for语句应用示例 1.4 echo命令参数 2.while循环语句 2.1 while语句应用示例 2.2 通过while循环读取行内容 3.until 4.双重循环 4.1 双重循环案例 4.2 循环的退出 …

从零开始详解OpenCV条形码区域分割

前言 在识别二维码之前&#xff0c;首先要划分出二维码的区域&#xff0c;在本篇文章中将从零开始实现二维码分割的功能&#xff0c;并详细介绍用到的方法。 我们需要处理的图像如下&#xff1a; 完整代码 首先我们先放出完整代码&#xff0c;然后根据整个分割流程介绍用到…

基于fastapi sqladmin开发,实现可动态配置admin

1. 功能介绍&#xff1a; 1. 支持动态创建表、类&#xff0c;属性&#xff0c;唯一约束、外键&#xff0c;索引&#xff0c;关系&#xff0c;无需写代码&#xff0c;快速创建业务对象&#xff1b; 2. 支持配置admin显示参数&#xff0c;支持sqladmin原生参数设置&#xff0c;动…

Istio 使用 Apache SkyWalking 进行服务链路追踪、链路监控告警

一、Istio 使用 Apache SkyWalking 链路追踪和告警 SkyWalking是一个开源的观测平台&#xff0c;用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据&#xff0c;SkyWalking 提供了一种简便的方式来清晰地观测分布式系统&#xff0c;甚至可以观测横跨不同云的系统…

终端安全管理防护软件排行榜2024(四大终端监控软件推荐)

你的企业存在这些问题吗&#xff1f; 数字化转型的深入和远程办公模式的普及&#xff0c;企业对终端安全管理的需求日益凸显。 确保终端设备的安全性不仅关乎数据保护、业务连续性&#xff0c;更直接影响企业的声誉与合规性。 2024年终端安全防护软件排行榜&#xff0c;有谁荣…