argparse简介

news2024/9/24 5:28:37

一、argparse简介

argparse 模块是 Python 内置的用于命令项选项与参数解析的模块,argparse 模块可以让人轻松编写用户友好的命令行接口,能够帮助程序员为模型定义参数。

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

2. 举个栗子

# 导入库
import argparse
 
# 1. 定义命令行解析器对象
parser = argparse.ArgumentParser(description='Demo of argparse')
 
# 2. 添加命令行参数
parser.add_argument('--epochs', type=int, default=30)
parser.add_argument('--batch', type=int, default=4)
 
# 3. 从命令行中结构化解析参数
args = parser.parse_args()
print(args)
epochs = args.epochs
batch = args.batch
print('show {}  {}'.format(epochs, batch))

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

接着我们通过对象的add_argument函数来增加参数。这里我们增加了训练中常用的epochs和batch参数,最后采用对象的parse_args获取解析的参数。打印结果如下图所示:

或者执行命令python fun_test.py --epochs 30 --batch 4

二、参数详解

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参数选项参数的名称或标签,例如 epochs 或者 -e, --epochs。Flag参数不需要指定参数值,只需要带有参数名即可。
  • action: 命令行遇到flags参数时的动作。有两个常见的动作,store_true:设定flag参数为true;store_false:设定flag参数为False。注意:如果直接运行程序,默认不读取该变量,要使用必须要进行传参,例如:python try.py --epochs
  • 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()

在脚本中,通常 parse_args() 会被不带参数调用,而 ArgumentParser 将自动从 sys.argv 中确定命令行参数。

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

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

相关文章

Fastjson反序列化审计及验证

简介:数字化平台已经与我们生活紧密结合,其用户规模庞大,一旦系统出现故障,势必会造成一定生活的不便。比如疫情时代,健康码已经成为人们出门必备的条件,一旦提供健康码服务平台出现故障,出行将…

imx6ull内核移植记录:failed to find ocotp node

前言 记录记录,是个和MAC地址相关的信息。 一 尝试尝试 [ 0.093958] vddsoc: supplied by regulator-dummy [ 0.126215] failed to find ocotp node [ 0.126744] No ATAGs? 经过分析,拆分为两个问题: [ 0.126215] failed t…

Web前端 CSS3 02 小练习

京东小项目 设置一个京东侧边栏 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&quo…

读 NebulaGraph源码 | 查询语句 LOOKUP 的一生

本文由社区用户 Milittle 供稿 LOOKUP 是图数据库 NebulaGraph 的一个查询语句。它依赖索引&#xff0c;可以查询点或者边的信息。在本文&#xff0c;我将着重从源码的角度解析一下 LOOKUP 语句的一生是如何度过的。 本文源码阅读基于内核源码的 v3.3.0 版本&#xff0c;详见 …

实现SQLSERVER 调用 C# 代码

简单例子 首先写一段简单的 C# 代码&#xff0c;然后把它编译成 dll。 namespace Bussiness {public class UserFunctions{public static string UserLogin(string username, string password){var random new Random();var isSuccess random.Next() % 2 0;return isSucce…

【漏洞复现】钉钉rce反弹shell

文章目录 一、漏洞描述二、漏洞原理三、影响版本四、复现过程0.环境说明1.msf 生成shellcode2.msf开启监听3.将生成的shellcode替换原shellcode4.开启web服务&#xff0c;并上传poc文件&#xff0c;构造poc5.从钉钉发送poc给受害者6.受害者点击即会触发漏洞&#xff0c;在msf监…

前端菜鸟如何快速开发个人产品

我是车辙&#xff0c;我的掘金小册《SkyWalking&#xff1a;应用监控和链路跟踪》已经上线啦&#xff0c;这是我的第一本电子书&#xff0c;欢迎大家订阅。 大家好&#xff0c;我是车辙。在完成小册后的一段时间&#xff0c;我突然想开发一款个人H5产品。在起初有这样想法的时候…

长、中、短视频“再战”微短剧

配图来自Canva可画 近年来&#xff0c;流量焦虑一直伴随着国内的视频平台&#xff0c;比如&#xff0c;制作精良的长视频由于剧集冗长正在被“追求效率”的年轻人抛弃&#xff1b;高歌猛进的短视频也因为无法承受太多有价值的内容而面临增长瓶颈。在此背景下&#xff0c;制作门…

中国工业以太网交换机市场分析

一、我国以太网交换机市场&#xff1a; 工业以太网交换机&#xff08;IndustrialEthernetSwitches&#xff09;是能够满足工业现场需要&#xff0c;技术层面与商业以太网交换机适配&#xff0c;而实时通信、可靠性、稳定性、安全性、环境适应性等各个方面规定高于商业以太网交…

玩转X3派,健身游戏两不误

一、准备工作 Windows电脑端安装拳皇游戏 &#xff08;因为是按键模拟&#xff0c;理论上只要是按键控制的游戏都可以玩&#xff0c;本文用MAME模拟器作例子&#xff0c;下载MAME&#xff1a;MAMEdev.org | Home of The MAME Project&#xff09; Windows可直接从该目录下载&…

常用的PHP伪协议大全

目录 常见文件包含函数 常见协议 php:// php://filter&#xff08;本地磁盘文件进行读取&#xff09; php://input &#xff08;读取POST数据&#xff09; file:// data:// 常见文件包含函数 函数功能include()代码执行到 include() 函数时将文件包含include_once()当…

如何操作工单系统

如何自定义工单字段 点击【工单管理】 > 点击【工单自定义字段】。选择【添加新的自定义字段】&#xff0c;即可进行字段编辑。管理人员可以在此页面自行添加要在工单上显示的内容&#xff0c;更改工单的格式&#xff0c;使其更满足于自身实际操作需要。管理员可选择添加单…

从“少林寺”毕业后,我当上了开源社区“区长”

本期名人堂我们有幸邀请到了Alluxio创始成员兼开源社区副总裁范斌先生。范斌先生讲述了自己的求学、工作、加入开源社区的经历&#xff0c;以及对未来十年数据编排发展的展望&#xff0c;和对开发贡献者的一些建议。 问题 1&#xff1a;范斌老师您好&#xff0c;很荣幸有机会采…

归并排序与逆序对数量模板题

归并排序 归并排序模板题 给定你一个长度为 n 的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行&#xff0c;第一行包含整数 n。 第二行包含 n 个整数&#xff08;所有整数均在 1∼109 范围内&#xff…

DCG开年大戏上演“拖字诀”,爆雷恐迎加密至暗时刻

文/章鱼哥出品/陀螺财经币圈无新事&#xff0c;新年伊始&#xff0c;DCG被Gemini催债引发爆雷传言的事情一如FTX、SBF爆雷当初 &#xff0c;DCG是否会步他们的后尘&#xff0c;目前还不得而知&#xff0c;但这开年一记重锤&#xff0c;给2023的加密领域开了个坏头。祸起Gemini …

【王道·计算机网络】第一章 计算机网络基本体系【未完】

1. 计算机网络概述 1. 概念 计算机网络是一个将分散的、具有独立功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统。简而言之&#xff0c;计算机网络就是一些互联的(通过通信链路互联互通)、自治的计算机系…

【4.1】Ribbon负载均衡原理

【4.1】Ribbon负载均衡1 Ribbon--负载均衡原理1.1 负载均衡流程1.2 源码分析&#xff08;debug&#xff09;2 总结1 Ribbon–负载均衡原理 1.1 负载均衡流程 图中的地址是真实可用的地址吗&#xff1f; 显然不是。 这样一个请求实际上是无法直接到达user-service的。 因此中间…

求一款免费好用的进销存管理软件?

求一款免费好用的进销存管理软件&#xff1f; 免费好用的进销存管理软件&#xff0c;“免费”一词对用户最具吸引力。 很多的小微企业在企业发展的过程都会选择免费的进销存管理软件来协助自己运营。都会希望&#xff0c;花最低的成本&#xff0c;实现最大的利益。 进销存管…

牛客网数据库sql实战剖析(一)

牛客网SQL实战 1.查找最晚入职员工的所有信息 思路&#xff1a;找出入职时间最大的时间&#xff0c;作为子查询条件进一步查找到该员工的其它信息。 SELECT * FROM employees WHERE hire_date (SELECT MAX(hire_date)FROM employees );这里不能用order by的方式&#xff0c…

私募证券基金动态-12月报

成交量&#xff1a;2022全年日均9,277.25亿元12月A股两市日均成交7,875.28亿元&#xff0c;环比下降15.15%、同比下降26.83%&#xff0c;是2022年继9月以后成交量次低的月份。2022年全年&#xff0c;日均成交量9,277.25亿元。管理人&#xff1a;新提交备案29家&#xff0c;备案…