【Python进阶】argparse库基础用法全总结:高效脚本参数解析 | 参数类型使用代码

argparse库是 Python 标准库中用于解析命令行参数和选项的模块。它使得编写命令行界面(CLI)变得更加容易。,在深度学习中用到的比较多~~

我们运行Python文件往往是直接输入命令

python test.py

但是如果我们想给Python文件脚本运行时候传入参数,像是下面这种

python test.py 123 456 -config

该怎么做呢?就是要用到argparse库~

将argparse库的基础用法总结如下


文章目录

  • 1 参数的基本类型
  • 2 用法
    • 2.1 创建参数总容器
    • 2.2 添加参数
      • 2.3.1 name 添加参数名称
      • 2.3.2 type 解析类型
      • 2.3.3 参数默认值
      • 2.3.4 参数是否必须设置
      • 2.3.5 参数提示信息
      • 2.3.6 参数动作
      • 2.3.7 参数可选值列表
      • 2.3.8 参数个数
    • 2.3 解析命令行参数
    • 2.4 使用参数
  • 3 完整代码

1 参数的基本类型

在命令行运行 Python 文件时,可以向文件传递不同类型的参数。主要有以下几种类型的参数:

  1. 位置参数(Positional arguments):位置参数是指在命令行中按照特定顺序传递给程序的参数,它们不带任何前缀。例如,在命令行中运行 python script.py arg1 arg2arg1arg2 就是位置参数。

  2. 选项参数(Optional arguments):选项参数是可选的参数,它们通常以短横线(-)或双短横线(--)开头。选项参数可以有一个或多个值。例如,-h--help 是常见的用于显示帮助信息的选项参数。

  3. 标志参数(Flag arguments):标志参数是一种特殊的选项参数,它们不带值,只用于表示某个状态或开关是否打开。通常以短横线和单个字符表示,例如 -v 表示 verbose 模式。

  4. 环境变量参数(Environment variable arguments):有时候,程序可能会从环境变量中读取参数值。这种方式不需要在命令行中显式传递参数,而是通过预先设置的环境变量来传递参数信息。

这些参数可以混合使用,例如 python script.py arg1 -v --output result.txt,其中 arg1 是位置参数,-v 是标志参数,--output result.txt 是选项参数,表示输出到 result.txt 文件中。

2 用法

2.1 创建参数总容器

import argparse
parser=argparse.ArgumentParser()

用ArgumentParser类实例化即可创建一个总的容器类parser

之后我们添加参数就是往这个parser里面添加

2.2 添加参数

parser.add_argument('num1', type=int, help='The first number')
parser.add_argument('num2', type=int, help='The second number')

调用add_argument函数做参数的的添加

add_argument 方法是 argparse.ArgumentParser 类的一个方法,用于向解析器添加一个新的参数。add_argument 方法有很多参数

2.3.1 name 添加参数名称

  • name or flags:参数的名称或者选项标志,可以是一个字符串(位置参数)或者一个列表(选项参数)。例如,'--output' 表示一个长选项,'-o', '--output' 表示一个短选项和一个长选项。

2.3.2 type 解析类型

  • type:参数的类型,用于指定参数的值应该被解析成什么类型。例如,int 表示整数,float 表示浮点数,默认的话是字符型,这时候如果我们期望做数值运算,肯定得转换为整形或浮点型

2.3.3 参数默认值

  • default:参数的默认值,如果用户没有提供该参数,则使用默认值。默认值可以是任何合法的 Python 值。

2.3.4 参数是否必须设置

  • required:指定参数是否是必需的,默认为 False。如果设置为 True,则用户必须提供该参数,否则会显示错误信息。

2.3.5 参数提示信息

  • help:参数的帮助信息,用于描述参数的作用和用法。当用户使用 -h--help 选项时,会显示帮助信息。

2.3.6 参数动作

  • action:参数的动作,指定参数应该如何处理。常用的值包括 store(存储参数值)、store_true(如果存在该参数则存储 True,否则存储 False)、store_false(如果存在该参数则存储 False,否则存储 True)等。

action 参数用于指定参数在解析时应该如何处理。它定义了当参数在命令行中出现时应该采取的动作。下面是一些常见的 action 参数值及其含义:

store:默认行为,将参数的值存储起来。如果不指定 action,则默认为 store

store_const:将一个常量值存储到参数中。通常与 const 参数一起使用。例如:

parser.add_argument('--verbose', action='store_const', const=True)

这会将 --verbose 参数的值设置为 True

store_true:将参数的值设置为 True。通常用于标记某个选项是否存在。例如:

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

如果用户在命令行中使用了 --verbose,则参数的值为 True,否则为 False

store_false:将参数的值设置为 False。与 store_true 类似,用于标记某个选项是否不存在。

append:将参数值追加到列表中。通常与 nargs='+' 一起使用,表示参数可以接受多个值,这些值将被追加到一个列表中。

append_const:将一个常量值追加到列表中。通常与 const 参数一起使用。

count:统计参数出现的次数。用于统计某个选项在命令行中出现的次数。

help:显示帮助信息并退出。

2.3.7 参数可选值列表

  • choices:参数的可选值列表,用户只能从列表中选择一个值作为参数的值。如果用户提供的值不在列表中,则会显示错误信息。

通过使用 add_argument 方法,可以灵活地定义各种不同类型的参数,并在命令行中解析这些参数,从而实现更加复杂的命令行界面。

2.3.8 参数个数

  • nargs 参数用于指定一个参数应该接受的命令行参数数量。它可以取以下几种值:

    • N:表示参数应该接受 N 个命令行参数。

    • ?:表示参数可以接受零个或一个命令行参数。如果没有提供命令行参数,则该参数的值为 None

    • *:表示参数可以接受零个或多个命令行参数。命令行参数会被收集到一个列表中。

    • +:表示参数可以接受一个或多个命令行参数。命令行参数会被收集到一个列表中。

例如,对于一个参数定义如下:

parser.add_argument('--inputs', nargs='+')

这表示 --inputs 参数可以接受一个或多个命令行参数,这些参数会被收集到一个列表中。

另一个例子是:

parser.add_argument('--output', nargs='?', const='default.txt')

这表示 --output 参数可以接受零个或一个命令行参数。如果用户没有提供命令行参数,则参数的值将为 'default.txt'

2.3 解析命令行参数

添加好后,我们进行解析

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

2.4 使用参数

解析好后,我们就可以

直接通过.来使用了

sum = args.num1 + args.num2
print(f'The sum of {args.num1} and {args.num2} is {sum}')

3 完整代码

import argparse# 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description='Add two numbers')# 添加两个参数
parser.add_argument('num1', type=int, help='The first number')
parser.add_argument('num2', type=int, help='The second number')# 解析命令行参数
args = parser.parse_args()# 计算和并输出结果
sum = args.num1 + args.num2
print(f'The sum of {args.num1} and {args.num2} is {sum}')

运行

python test.py 5 3

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

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

相关文章

springMVC的常见问题(面试题)问答

当涉及到Spring MVC的面试题,通常会涉及到该框架的基本概念、工作原理、核心组件以及一些相关的配置和最佳实践。下面是一些常见的Spring MVC面试题及其详细答案: 什么是Spring MVC? Spring MVC是基于Java的Web框架,用于开发Web应…

蓝桥杯练习题总结(二)dfs题、飞机降落、全球变暖

目录 一、飞机降落 二、全球变暖 初始化和输入 确定岛屿 DFS搜索判断岛屿是否会被淹没 计算被淹没的岛屿数量 三、军训排队 一、飞机降落 问题描述: N架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 时刻到达机场上空,到达时它的剩余…

[Linux]文件缓冲区

文件fd 输出重定向除了用dup2()改变数组下标外&#xff0c;还可以用命令来完成 所有的命令执行&#xff0c;都必须有操作系统将其运行起来变成进程&#xff0c;然后根据>>, <<来判断是输入重定向&#xff0c;还是输出重定向。 缓冲区 之所以有缓冲区&#xff0…

2024帝国CMS彩虹易支付插件,兼容易支付里的支付宝支付

1、上传 yunpay 文件夹到 /e/payapi/ 目录 2、在目录 yunpay 内找到 to_pay.php 、 return_url.php 、 notify_url.php 分别将文件内的 //支付API地址 $alipay_config[apiurl] http://XXX.XXX.com/; 改成自己易支付的支付地址 3、后台——其他——在线支付——管理支付接口—…

JavaScript 基础、内置对象、BOM 和 DOM 常用英文单词总结

一提到编程、软件、代码。对于英语不是很熟悉的同学望而却步。其实没有想像中的难么难&#xff0c;反复练习加上自己的思考、总结&#xff0c;会形成肌肉记忆。整理一下&#xff0c;初学者每天30遍。 1、JavaScript 基础语法 break&#xff1a;中断循环或 switch 语句的执行。…

安卓转鸿蒙竟如此丝滑

随着鸿蒙的爆火&#xff0c;大家都想知道鸿蒙能不能搞&#xff1f; 相信大家搞开发的&#xff0c;都多多少少的了解过鸿蒙。近几个月鸿蒙的大动作也不少&#xff0c;如&#xff1a;重庆市近20个垂域应用与鸿蒙原生合作、深圳制定鸿蒙《行动计划》、阿里再次与鸿蒙展开合作&…

树森林试题

01.下列关于树的说法中&#xff0c;正确的是&#xff08;). Ⅰ.对于有n个结点的二叉树&#xff0c;其高度为log2n Ⅱ.完全二叉树中&#xff0c;若一个结点没有左孩子&#xff0c;则它必是叶结点 Ⅲ.高度为h (h>0)的完全二叉树对应的森林所含的树的个数一定是h IV.一棵树中的…

微信小程序开发技巧:canvas实现电子签名

在微信小程序中实现电子签名功能方式很多,本文采用canvas绘制的方式实现。具体实现步骤如下: 在页面中添加canvas元素 <view class"container"><canvas canvas-id"signCanvas" class"canvas" disable-scrolltrue touchstart"sta…

Docker常用命令详解

Docker 是一种用于开发、交付和运行应用程序的开放平台&#xff0c;它允许您将应用程序与其依赖项打包到一个称为容器的轻量级、可移植的容器中。以下是一些常用的 Docker 命令及其详细解释&#xff1a; docker run&#xff1a;运行一个容器。 例如&#xff1a;docker run -it …

Dataset之UCI_autos_cars:UCI_autos_imports-85(汽车进口数据集)的简介、安装、案例应用之详细攻略

Dataset之UCI_autos_cars&#xff1a;UCI_autos_imports-85(汽车进口数据集)的简介、安装、案例应用之详细攻略 目录 UCI_autos_imports-85的简介 UCI_autos_imports-85的安装 UCI_autos_imports-85的案例应用 1、训练一个简单的线性回归模型来预测汽车的价格 UCI_autos_i…

跨时钟域学习记录(一)

亚稳态 亚稳态是电平介于高低电平之间的一种暂时状态。在同步系统中&#xff0c;当寄存器的信号无法满足建立时间和保持时间时&#xff0c;输出端的信号就可能出现亚稳态。在异步系统中&#xff0c;亚稳态并非一定在建立时间和保持时间无法满足时出现。   受噪声、温度、电压…

非root用户安装git lfs(git大文件)命令记录

背景 最近在看LLAMA2的模型&#xff0c;想直接从Huggingface下载模型到本地&#xff0c;但是却发现服务器上没有安装git lfs命令。查询了一些资料完成了非root用户安装git lfs命令的操作&#xff0c;特此记录。 Git LFS下载与解压 下载 Git LFS 二进制文件 访问 Git LFS 发布…

SQL语言: 内置函数

字符串函数 CONCAT()&#xff1a;连接两个或多个字符串 SELECT CONCAT(Hello, , World) AS concatenated_string;​ SUBSTRING()&#xff1a;返回指定位置开始的子字符串 SELECT SUBSTRING(Hello World, 7) AS sub_string;LENGTH()&#xff1a;返回字符串的长度 SELECT LENGT…

【vue3.0】实现导出的PDF文件内容是红头文件格式

效果图: 编写文件里面的主要内容 <main><div id"report-box"><p>线索描述</p><p class"label"><span>线索发现时间:</span> <span>{{ detailInfoVal?.problem.createdDate }}</span></p><…

C++经典面试题目(四)

1、请解释const关键字的作用。 在C中&#xff0c;const关键字主要用来表示“不变性”&#xff0c;即被它修饰的东西是不可修改的。它可以用于多种上下文&#xff1a; 修饰基本数据类型变量&#xff1a;声明一个常量&#xff0c;一旦初始化后&#xff0c;其值就不能再更改。 co…

MyBatis3源码深度解析(二十一)动态SQL实现原理(二)动态SQL解析过程、#{}和${}的区别

文章目录 前言8.5 动态SQL解析过程8.5.1 SQL配置转换为SqlSource对象8.5.2 SqlSource转换为静态SQL语句 8.6 #{}和${}的区别8.7 小结 前言 在【MyBatis3源码深度解析(二十)动态SQL实现原理(一)动态SQL的核心组件】中研究了MyBatis动态SQL相关的组件&#xff0c;如SqlSource用于…

AAC相关知识

一、AAC音频格式种类有哪些 AAC音频格式是一种由MPEG-4标准定义的有损音频压缩格式。AAC包含两种封装格式 ADIF&#xff08;Audio Data Interchange Format音频数据交换格式&#xff09;和ADTS&#xff08;Audio Data transport Stream音频数据传输流&#xff09;。 ADIF 特点…

【Node.js】流

概念 流&#xff08;Stream&#xff09;是一种用于在节点&#xff08;Node&#xff09;之间传输数据的抽象概念。 它可以看作是一种连续的数据流&#xff0c;数据可以按照连续的块&#xff08;chunk&#xff09;通过流从源&#xff08;source&#xff09;流向目的地&#xff…

LeetCode Hot100-哈希-两数之和

题目描述&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出和为目标值 target 的两个整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可…

蓝桥杯 完全二叉树的权值

Problem: 蓝桥杯 完全二叉树的权值 文章目录 思路解题方法前缀和双指针 复杂度前缀和Code双指针Code 思路 这个问题是关于完全二叉树的权值。完全二叉树的特性是&#xff0c;除了最后一层外&#xff0c;其他各层的节点数都达到最大&#xff0c;且最后一层从左向右连续。在这个问…