当前位置: 首页 > news >正文

22 Python的argparse模块

概述

        在上一节,我们介绍了Python的datetime模块,包括:datetime模块中一些常用的属性和函数。在这一节,我们将介绍Python的argparse模块。argparse模块是Python的一个标准库,用于编写命令行界面。它可以处理命令行参数和选项,并生成帮助和使用信息。

        该模块主要包含的功能如下:

        帮助和使用信息生成:自动生成帮助和使用信息,包括参数和选项的说明、用法示例等。

        命令行参数解析:解析命令行参数和选项,包括位置参数、可选参数和标志。

        参数类型检查:支持对参数类型进行检查,包括整数、浮点数、字符串等。

        子命令支持:支持定义子命令,每个子命令可以有自己的参数和选项。

        参数组:支持将参数分组,以方便管理和使用。

        下面,我们将逐一介绍argparse模块中一些常用的类和函数。

argparse.ArgumentParser类

        argparse.ArgumentParser是argparse模块中的一个类,用于创建解析器对象,帮助处理命令行参数和选项,并生成帮助和使用信息。使用argparse.ArgumentParser类可以简化命令行参数和选项的解析过程,以下是具体的使用步骤:

        1、导入argparse模块:import argparse。

        2、实例化一个对象:parser = argparse.ArgumentParser()。

        3、加入参数或选项:parser.add_argument(),每一个add_argument方法对应一个要关注的参数或选项。

        4、获取参数:args = parser.parse_args(),解析成功之后即可使用。

        在创建argparse.ArgumentParser对象时,可以指定一些可选参数,比如:description,用于描述程序的用途和参数的说明。

add_argument基本选项

        通过调用add_argument函数,可以指定命令行参数的名称、类型、默认值等属性,为参数提供帮助文本和元数据。

# test.py
import argparse# 创建解析器对象
parser = argparse.ArgumentParser(description = '这是一个示例程序')# 添加参数
parser.add_argument('param_name', type = int, help = '这是一个整数参数')# 解析参数
args = parser.parse_args()# 使用参数
print(args.param_name)

        在上面的示例代码中,我们使用add_argument函数添加了一个名为param_name的参数,指定了它的类型为整数,并提供了帮助文本。然后,通过调用parse_args函数解析命令行参数,并将解析后的参数值存储在args对象中。最后,我们可以使用args.param_name访问该参数的值。如果我们在命令行输入python test.py 66命令,则会输出:66。

add_argument更多选项

        add_argument函数还有许多其他选项,如下。

        metavar:指定参数的元变量名称,用于帮助文本中。

        nargs:指定参数接收的值的数量,可以是固定的数量,也可以是可变数量。其中,'+'表示至少需要一个参数,'*'表示可以接受任意数量的参数,数字表示只接受固定数量的参数。

        default:指定参数的默认值。

        choices:限制参数的取值范围。

        required:指定参数是否必需。

        help:提供参数的帮助文本。

        下面是一个稍微复杂一点的示例代码,用到了更多的选项。

# test.py
import argparse# 创建解析器对象
parser = argparse.ArgumentParser(description = '这是一个示例程序')# 添加参数
parser.add_argument('integers', metavar='N', type=int, nargs='+', help = '用于运算的整数的个数')
parser.add_argument('--sum', dest='compute_sum', action='store_true', help = '计算输入的整数的和')
parser.add_argument('--max', dest='find_max', action='store_true', help = '找到输入的最大整数')
parser.add_argument('--average', dest='compute_average', action='store_true', help = '计算输入的平均值')# 解析参数
args = parser.parse_args()# 使用参数
if args.compute_sum:print(sum(args.integers))
elif args.find_max:print(max(args.integers))
elif args.compute_average:print(sum(args.integers) / len(args.integers))
else:print('未选择任何操作')

        在上面的示例代码中,我们添加了如下几个参数和选项。

        integers:一个位置参数,接受一个或多个整数作为输入。

        --sum:一个可选的选项,用于计算输入整数的总和。

        --max:一个可选的选项,用于找出输入整数的最大值。

        --average:一个可选的选项,用于计算输入整数的平均值。

        通过解析命令行参数,我们可以根据用户选择的选项执行相应的操作,并打印输出相应的结果。上述代码的执行结果如下。

python test.py -h
usage: test.py [-h] [--sum] [--max] [--average] N [N ...]这是一个示例程序positional arguments:N           用于运算的整数的个数options:-h, --help  show this help message and exit--sum       计算输入的整数的和--max       找到输入的最大整数--average   计算输入的平均值python test.py --sum 5 6 7
18python test.py --max 5 6 7
7python test.py --average 5 6 7
6.0python test.py 5 6 7
未选择任何操作

add_argument的action选项

        action选项用来定义当命令行选项被触发时的行为。有多种可用的行为,如下。

        'store':默认值。当命令行选项被触发时,将选项后面的参数值存储下来。

        'store_const':当命令行选项被触发时,将一个常量值存储下来。比如:add_argument('--foo', action='store_const', const=42)会将42存储为args.foo。

        'store_true' 和 'store_false':当命令行选项被触发时,将一个布尔值存储下来。比如:add_argument('--foo', action='store_true')会在args.foo为真(即选项被触发)时存储一个True值。

        'append':当命令行选项被触发时,将一个值添加到列表中。比如:add_argument('--foo', action='append', default=[])会将任何遇到的--foo选项的值添加到args.foo列表中。

        'append_const':当命令行选项被触发时,将一个常量值添加到列表中。比如:add_argument('--foo', action='append_const', const=42)会将42添加到args.foo列表中。

# test.py
import argparseparser = argparse.ArgumentParser()
parser.add_argument('--param1', action = 'store_true')
parser.add_argument('--param2', action = 'append', default = [])
parser.add_argument('numbers', nargs = '+')
args = parser.parse_args()print(args.param1)
print(args.param2)
print(args.numbers)

        在上面的示例代码中,--param1选项被触发时,将存储一个True值。--param2选项可以接受任意数量的参数,并将它们添加到一个列表中。numbers选项接受一个或多个参数,并将它们添加到一个列表中。上述代码的执行结果如下。

python test.py 99 100 --param1 --param2 6 --param2 9
True
['6', '9']
['99', '100']

相关文章:

22 Python的argparse模块

概述 在上一节,我们介绍了Python的datetime模块,包括:datetime模块中一些常用的属性和函数。在这一节,我们将介绍Python的argparse模块。argparse模块是Python的一个标准库,用于编写命令行界面。它可以处理命令行参数和…...

Unity之NetCode多人网络游戏联机对战教程(3)--NetworkObject组件讲解

文章目录 NetworkObjectAlways Replicate As RootSynchronization TransformActive Scene SynchronizationScene Migration SynchronizationSpawn With ObserversDont Destroy With OwnerAuto Object Parent Sync 后话 NetworkObject 为了复制任何Netcode感知属性或发送/接收R…...

正点原子lwIP学习笔记——Socket接口UDP实验

1. Socket接口UDP连接配置 Socket接口的UDP配置流程如下: sin_family 设置为 AF_INET 表示 IPv4 网络协议;sin_port 为设置端口号, 可设置为 8080;sin_addr.s_addr 设置本地 IP 地址;调用函数 Socket 创建 Socket 连…...

连接组学中的机器学习:从表征学习到模型拟合

前言 机器学习(ML)由于其高自动化程度、高灵敏度和特异性优势,在医学影像领域取得了巨大的成功。由于具备这些优势,机器学习已被广泛应用于神经成像数据,目的是提取与感兴趣变量(如疾病状态)相关的特征。这使我们能够形成关于不同条件下大脑…...

数据结构-----二叉树的创建和遍历

目录 前言 二叉树的链式存储结构 二叉树的遍历 1.前序遍历 2.中序遍历 3.后序遍历 二叉树的创建 创建一个新节点的函数接口 1.创建二叉树返回根节点 2.已有根节点,创建二叉树 3.已有数据,创建二叉树 前言 在此之前我们学习了二叉树的定义和储…...

【算法题】1333. 餐厅过滤器

题目: 给你一个餐馆信息数组 restaurants,其中 restaurants[i] [idi, ratingi, veganFriendlyi, pricei, distancei]。你必须使用以下三个过滤器来过滤这些餐馆信息。 其中素食者友好过滤器 veganFriendly 的值可以为 true 或者 false,如果…...

linux脚本笔记

目录 1.增加环境变量 2.自定义命令快捷键 3.关闭selinux和防火墙 4.增加别名快捷键 5.Linux链接 1.增加环境变量 新建add_env.sh #!/bin/bashapp_dir"/root/docker"# 检查配置文件中是否已存在相同的环境变量 if grep -q -E "^export APP_HOME.*" ~…...

目标检测YOLO实战应用案例100讲-面向路边停车场景的目标检测(中)

目录 3.1.1 特征图相似度计算 3.1.2 特征图相似度实验 3.1.3 基于GhostBlock的网络结构改进...

[论文笔记]Prefix Tuning

引言 今天带来微调LLM的第二篇论文笔记Prefix-Tuning。 作者提出了用于自然语言生成任务的prefix-tuning(前缀微调)的方法,固定语言模型的参数而优化一些连续的任务相关的向量,称为prefix。受到了语言模型提示词的启发,允许后续的token序列注意到这些prefix,当成虚拟toke…...

electron快速入门

新建electronstu01文件夹 以管理员身份运行powershell,切换到该文件下 npm init -y安装依赖包 npm install --save-dev electron失败 npm install -g cnpm --registryhttps://registry.npm.taobao.org cnpm install --save-dev electron修改 package.json &qu…...

C语言的stdio.h的介绍

C语言的stdio.h的介绍 C语言的stdio.h的介绍 C语言的stdio.h的介绍C语言stdio.h的介绍 C语言stdio.h的介绍 这个含义是导入标准输入输出库 包含头文件.h&#xff0c;std标准库&#xff0c;io是input output输入输出库 <>代表系统库&#xff0c;自定义的话用""…...

使用香橙派 在Linux环境中安装并学习Python

前言 在实际项目中&#xff0c;经常会遇到需要使用人工智能的场景&#xff0c;如人脸识别&#xff0c;车牌识别等...其一般的流程就是由单片机采集数据发送给提供人工智能算法模型的公司&#xff08;百度云&#xff0c;阿里云...&#xff09;&#xff0c;然后人工智能将结果回…...

如何开发物联网 APP?

如何开发物联网 APP? 这个问题本身是不严谨的&#xff0c;APP只是手机端的一个控制或者用于显示的人机交互页面&#xff0c;物联网是通过传感器&#xff0c;物联网卡等模块把物体接入网络以方便远程监控或者控制等。 你问的应该是怎么开发出来一个远程控制物体的APP吧&#x…...

配置pytorchGPU虚拟环境-python3.7

cuda版本的pytorch包下载地址戳这里 winR->输入cmd->输nvcc -V回车 cuda 11.0 输入以下命令来查找 CUDA 的安装路径&#xff1a; Windows: where nvcc 输入以下命令来查找 cuDNN 的版本号&#xff1a; Windows: where cudnn* cuDNN 8.0 本机安装的是cuda 11.0&…...

Logic Pro X10.7.9(mac乐曲制作软件)

Logic Pro X是由苹果公司开发的一款专业音频制作软件&#xff0c;主要用于音乐制作、录音、混音和母带处理等方面。以下是Logic Pro X的特点&#xff1a; 强大的音频编辑功能&#xff1a;Logic Pro X提供了丰富的音频编辑工具&#xff0c;包括波形编辑器、音频自动化、时间拉伸…...

第一部分:HTML5

目录 一&#xff1a;网页 1.1&#xff1a;什么是网页&#xff1f; 1.2&#xff1a;什么是HTML&#xff1f; 1.3&#xff1a;网页的形成 二&#xff1a;常用浏览器 三&#xff1a;Web标准 3.1&#xff1a;为什么需要Web标准&#xff1f; 3.2&#xff1a;Web标准的构成 四&a…...

Linux 基础入门

目录 一、计算机 1、组成 2、功能 二、操作系统 1、定义 2、主要工作 3、操作系统内核功能 4、常见的操作系统 三、Linux的组成 四、搭建Linux学习环境 五、安装远程连接Linux的软件 1、安装xshell 2、安装mobaxterm 六、Linux操作系统学习大纲 一、计算机 1、组…...

【数据结构】插入排序:直接插入排序、折半插入排序、希尔排序的学习知识总结

目录 1、排序的基本概念 2、直接插入排序 2.1 算法思想 2.2 代码实现 3、折半插入排序 3.1 算法思想 3.2 代码实现 4、希尔排序 4.1 算法思想 4..2 代码实现 1、排序的基本概念 排序是将一组数据按照预定的顺序排列的过程&#xff0c;排序的基本概念包括以下内容…...

Magic Battery for Mac:让你的设备电量管理变得轻松简单

Mac电脑用户们&#xff0c;你们是否曾经为了给设备充电而感到烦恼&#xff1f;是否希望能够方便地查看连接设备的电量情况&#xff1f;现在&#xff0c;有了Magic Battery for macOS&#xff0c;这些问题都将成为过去&#xff01; Magic Battery是一个实用的应用程序&#xff…...

nodejs+vue大学食堂订餐系统elementui

可以查看会员信息&#xff0c;录入新的会员信息&#xff0c;对会员的信息进行管理。 网站管理模块对整个网站中的信息进行管理&#xff0c;可以查看会员留在留言栏中的信息&#xff0c;设置网站中的参数等。用户管理模块主要实现用户添加、用户修改、用户删除等功能。 近年来&…...

nat综合实验

路漫漫其修远兮,吾将上下而求索。 实验目的如图 实验思路&#xff1a;配置内网&#xff0c;再配置外网&#xff0c;再做nat clien1配置 clien2配置 pc3配置 lsw1配置 sysname lsw1 # vlan batch 10 20 30 # interface MEth0/0/1 # interface Eth-Trunk1port link-type trunkp…...

【iOS逆向与安全】好用的一套 TCP 类

初始化 //页面 %hook xxxxxxxViewController//- (void)viewWillAppear:(BOOL)animated{ //NSLog("View Will Appear&#xff0c;再次进入刷新"); - (void)viewDidLoad{//启动tcp[[Xddtcp sharedTcpManager] connectServer] ;} 发送数据 //发送数据 [[Xddtcp shared…...

Ubuntu Kafka开机自启动服务

1、创建service文件 在/lib/systemd/system目录下创建kafka.service文件 [Unit] DescriptionApache Kafka Server Documentationhttp://kafka.apache.org/documentation.html Requireszookeeper.service[Service] Typesimple Environment"JAVA_HOME/usr/local/programs/j…...

c#实现单例模式的两种方法(饿汉式、懒汉式)

在C#中&#xff0c;可以使用以下几种方式来实现单例模式&#xff1a; 饿汉式单例模式&#xff08;Eager Singleton&#xff09;&#xff1a; 在类加载时就创建实例。私有化构造函数&#xff0c;防止外部实例化。提供一个静态的只读属性来获取实例。代码示例&#xff1a; // 在C…...

Git与Repo:开源开发的得力工具组合

Git与Repo&#xff1a;开源开发的得力工具组合 1. 引言 开源开发在当今的软件行业中扮演着至关重要的角色。它不仅推动了技术的创新和进步&#xff0c;也促进了开发者之间的合作与共享。随着越来越多的开源项目的涌现&#xff0c;有效的代码管理和版本控制成为了必不可少的工…...

centos7 添加网卡设置动态ip,修改网卡为任意名称

centos7 添加网卡并设置动态ip&#xff0c;重命名为任意名称 本文记录如何在centos环境上增加两个网卡&#xff0c;并设置为动态获取ip&#xff0c;以及修改网卡名称为任意名称 1、centos7添加两个网卡动态获取ip 1.1 vmvare上添加网络适配器 1、关闭虚拟机 2、 添加网络适…...

计算机竞赛 深度学习人脸表情识别算法 - opencv python 机器视觉

文章目录 0 前言1 技术介绍1.1 技术概括1.2 目前表情识别实现技术 2 实现效果3 深度学习表情识别实现过程3.1 网络架构3.2 数据3.3 实现流程3.4 部分实现代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习人脸表情识别系…...

nvm安装后node或npm不是内部或外部命令

nvm安装后出现node或npm不是内部或外部命令 进行以下步骤解决 找到nvm安装所在位置&#xff0c;新建一个空的nodejs文件夹 打开 windowr —> sysdm.cpl —> 高级 —>环境变量 将下图中两个位置的地址改成刚刚新建的nodejs空文件夹所在的位置 nvm安装后都是会自动添加…...

Kafka数据可靠性保证

1.生产者发送数据到Topic partition的可靠性保证 为保证producer发送的数据&#xff0c;能可靠的发送到指定的topic&#xff0c;topic的每个partition收到producer发送的数据后&#xff0c;都需要向producer发送ack&#xff08;acknowledgement确认收到&#xff09;&#xff0c…...

基于R的linkET包qcorrplot可视化Mantel test相关性网络热图分析correlation heatmap

写在前面 需求是对瘤胃宏基因组结果鉴定到的差异菌株与表观指标、瘤胃代谢组、血清代谢组、牛奶代谢组中有差异的部分进行关联分析&#xff0c;效果图如下&#xff1a; 数据准备 逗号分隔的csv格式文件&#xff0c;两个表格&#xff0c;一个是每个样本对应的表观指标数据&…...

武汉p2p网站制作公司/免费网站安全软件大全游戏

文章目录一、JVM线程通常有六种状态二、Java中sleep,wait,yield,join的区别一、JVM线程通常有六种状态 New&#xff08;新建&#xff09;: 尚未启动的线程的线程状态。 Runnable&#xff08;可运行&#xff09;: 可运行线程的线程状态&#xff0c;等待CPU调度。 Blocked&…...

网站建设策划书ppt/百度客服24小时人工服务在线咨询

http://www.oschina.net/question/12_50469 Netcat 或者叫 nc 是 Linux 下的一个用于调试和检查网络工具包。可用于创建 TCP/IP 连接&#xff0c;最大的用途就是用来处理 TCP/UDP 套接字。 这里我们将通过一些实例来学习 netcat 命令。 1. 在服务器-客户端架构上使用 Netcat …...

中国体育直播在线观看斯诺克赛/西安seo网站关键词

AngularJS 1.2版本中提供了Controller As语法&#xff0c;简单说就是可以在Controller中使用this来替代$scope&#xff0c;使得Controller更像一个传统的JS类&#xff0c;相对于$scope的继承树要理解上要简单一些。 基础用法 传统的Controller是这样写的&#xff1a; app.contr…...

医院建设网站/搜索引擎调词软件

Ⅰ 英语单词的 排序首先楼主所提供的句子是一个固定句式&#xff0c;也就是一种习惯用法(是宾语回前置结构)&#xff0c;这种习惯用法答不仅读起来朗朗上口&#xff0c;而且将说话人强调“赚更多的钱&#xff0c;然后才能花更多的钱”的隐含意思表达了出来&#xff0c;如果用一…...

建设银行官方网站打不开/googleseo优化

参考&#xff1a;https://blog.csdn.net/maweifei/article/details/51221259 # 示例&#xff1a; img_ cv::Mat::zeros(pic_height_, pic_width_, CV_8UC1);Mat不但是一个非常有用的图像容器类&#xff0c;同时也是一个通用的矩阵类。 Mat矩阵(图像容器)创建时CV_8UC1、CV_8U…...

四川南充房产网/宁波百度seo点击软件

Insatll (安装)//> 使用composer直接安装composer require graham-campbell/markdown//> 或在composer.json文件require中添加如下&#xff1a;"require": {"graham-campbell/markdown": "^7.0"}//> 使用下面命令更新composer.json依赖…...