argparse的用法

news2025/1/14 18:35:45

 

目录

一、使用argparse

二、参数详解

参考


一、使用argparse

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

argparse定义包括四个步骤:

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

完整代码:

import argparse

# 1.创建解释器
parser = argparse.ArgumentParser(description="可写可不写,只是在命令行参数出现错误的时候,随着错误信息打印出来。")
# 2.添加需要的参数
parser.add_argument('-l', '--loss',choices=['Adam', 'SGD'])
# 参数解释
# -l 代表短选项,在命令行输入-l和--loss的效果是一样的,作用是简化参数输入
#--loss 代表完整的参数名称,可以尽量做到让人见名知意,需要注意的是如果想通过解析后的参数取出该值,必须使用带--的名称
# choices 代表输入参数的只能是这个choices里面的内容,其他内容则会保错
parser.add_argument('--batchsize', type=int, default=8)
# 参数解释
# --batchsize 代表参数名称
# type  代表输入的参数类型,从命令行输入的参数,默认是字符串类型
# default 代表如果该参数不输入,则会默认使用该值
parser.add_argument('data_path')
# 参数解释
# 该种方式则要求必须输入该参数
# 输入该参数不需要指定参数名称,指定反而报错,解释器会自动将输入的参数赋值给data_path

# 3.进行参数解析
args = parser.parse_args()
print(args)
print(f'loss为{args.loss}')
print(f'batchsize为{args.batchsize}')
print(f'data_path为{args.data_path}')

我们通过在命令行中输入相关指令运行代码:

运行结果如下:

# 只运行python文件,不输入参数时

python main.py

 提示必须要输入data_path这个必选参数,并列出的其他参入使用方式

# 当将必选参数data_path也写入命令行时

python main.py data_path E:\args -l Adam

提示,不需要键入‘data_path’,只需要键入‘data_path’的内容,argparse会自动将该内容分配给‘data_path’。

python main.py E:\args -l Adam

打印如下信息,可以看到,未给‘batchsize’分配内容时,argparse会自动调用‘batchsize’的默认值‘default=8’ 

二、参数详解

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 自定义参数解析

参考

argparse简介

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

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

相关文章

线路中故障电弧产生了应该如何治理?-安科瑞黄安南

故障电弧的危害 故障电弧是指由于电气线路或设备中绝缘老化破损、电气连接松动、空气潮湿、电压电流急剧升高等原因引起空气击穿所导致的气体游离放电现象。故障电弧发生时,其中心温度可高达3000 ℃左右,并伴随有金属喷溅物,足以引燃任何可燃…

【AD】【规则设置】关于绿色报错的消除

关于绿色报错的消除 1、打开 在上面工具栏的 Tools - Design Rule Checker2、这两列,分别右键 选择 Batch DRC - All Off 取消掉所有的打钩3、再点击左侧的Electrical 把右边的这几个都打钩 每天进步一点点 如果我的学习记录有帮到你,可否赏点买辣条的钱…

提高接口自动化测试效率:使用 JMESPath 实现断言和数据提取!

前言 做接口自动化,断言是比不可少的。如何快速巧妙的提取断言数据就成了关键,当然也可以提高用例的编写效率。笔者在工作中接触到了JMESPath,那到底该如何使用呢?带着疑惑一起往下看。 JMESPath是啥? JMESPath 是一…

安达发APS|生产计划部门如何提升产量?

在当下制造业中,生产计划的制定和执行对于提高产量、降低成本、保证交货期等方面具有重要意义。随着科技的发展,越来越多的企业开始使用APS生产排程软件来优化生产计划,提高生产效率。本文将从以下几个方面介绍如何利用APS生产排程软件提升产…

外滩大会观察|重估蚂蚁!

点击关注 文丨刘雨琦,编丨王一粟 “不同品种的小狗排队通过‘实名认证’、刷脸识别不仅能识别人,还能识别狗”。“人脸、虹膜、掌纹都已经不算黑科技,脑纹识别才是真的不可替代。” 2023年上海外滩大会上,6G、无人安全检测实验室…

学Python的漫画漫步进阶 -- 第十四步.网络通信

学Python的漫画漫步进阶 -- 第十四步.网络通信 十四、网络通信14.1 基本的网络知识14.1.1 TCP/IP14.1.2 IP地址14.1.3 端口14.1.4 HTTP/HTTPS 14.2 搭建自己的Web服务器14.3 urllib.request模块14.3.1 发送GET请求14.3.2 发送POST请求 14.4 JSON数据14.4.1 JSON文档的结构14.4.…

方案:TSINGSEE青犀智能分析网关皮带撕裂算法的场景应用

在工地矿山等现实场景中,皮带运输在生产过程中是必不可少的,然而,由于长时间高强度的运转,皮带很容易发生撕裂、破损、跑偏等问题。这些问题会严重影响生产速度,甚至会导致严重的安全事故。为了有效预防此类安全事故发…

短视频抖音账号矩阵系统源码开发者自研(四)

抖音是一款备受欢迎的短视频APP,拥有数亿的用户,其中包括了大量的粉丝。为了让更多的人能够发现和观看到你的视频,抖音SEO是必不可少的一环,特别是对于拥有企业或个人品牌的用户来说。在这个过程中,抖音SEO源码的开源部…

不要动 WindowsApps 文件夹的权限以及更新 win10 版本

前言: 先简单说几句,本来打算开始写论文的,装个 mathtype 到 word 中,word 的安装路径在 WindowsApps 文件夹中,修改权限后导致 wsl 不能使用、微软自带的软件报错(参数错误)以及微软商店不能使…

区块链交易平台开发流程

随着区块链技术的日益发展,越来越多的金融机构和创业公司开始探索开发区块链交易平台的潜力。以下是一篇关于区块链交易平台开发流程的指南。 一、理解区块链技术 在开发区块链交易平台之前,必须深入理解区块链技术的内在机制和原理。区块链是一…

大数据之-Flink学习笔记

Flink Apache Flink — 数据流上的有状态计算。 Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算处理。 任何类型的数据都以事件流的形式生成。信用卡交易、传感器测量、机器日志或网站或移动应用程序 2上的用户交互,…

java复习-10-String类

String 类 实例化 String 本身包装的是一个数组,并且其有两种对象的实例化形式:直接赋值、构造方法实例化。 public class StringDemo {public static void main(String args[]){// 直接赋值String str1 "Hello,World";// 构造方法实例化S…

Web自动化测试理解

最近几天,由于工作需要接触Web自动化测试,所以我从网上找的资料,学习了解,然后自己总结汇总的随笔,如文章中有不足的地方,请大家多多指教;或者文章内容与他人相似,望见谅。 手工测试…

成都瀚网科技有限公司:抖店平台买家怎么修改评价?

在抖音电商平台上,买家的评价对店铺的声誉和销售业绩有着重要影响。然而,有时买家可能会因为某些原因想要修改之前的评价。那么,抖店平台上的买家如何修改评价呢?修改评价对店铺有什么影响?本文将介绍买家如何修改评价…

控制台日志打印console的封装,加入美化、行显示与打印开关,支持node.js环境

控制台日志打印console的封装,加入美化、行显示与打印开关,支持node.js环境 为什么要写这个? 封装这个控制台日志打印工具,主要是在项目中自己做的SDK需要提供给其他开发人员使用,加入了日志美化和打印打开&#xff…

C语言 cortex-A7核UART总线实验

一、C 1)uart4.h #ifndef __UART4_H__ #define __UART4_H__ #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_uart.h&quo…

maven清理本地仓库。删除_remote.repositories文件和删除失败的jar包

1.图预览 .bat文件要和仓库在同一平级目录 REPOSITORY_PATH要改成你自己仓库的地址 2、删除.lastUpdated文件(失败的jar包) 使用.bat文件 注明:REPOSITORY_PATHD:\software\Java\maven\repository 改成你仓库的地址 set REPOSITORY_PATHD:\software\Java\maven\rep…

nvm下载安装教程

前言 nvm 官网地址:https://nvm.uihtm.com 一、nvm 下载 进入 nvm github 地址,下载最新版本:https://github.com/coreybutler/nvm-windows/releases 点击选择当前最新版本。 滑动到底部,点击 nvm-setup.exe 下载安装文件。 接…

【C++ 番外】【指针】数组类型的指针,指向数组的指针,数组的元素是指针,这个视频说明白。数组和指针

from: https://www.bilibili.com/video/BV1H34y1K7AM/ 指向数组第一个元素的指针 数组类型指针 数组的类型都是指针 超级混合版本,加深理解

Spring-AOP+入门案例(注解)+AOP切入点语法+AOP通知类型

一、简介工作流程。 简介 SpringAop实际上就是代理模式 工作流程 二、导入依赖 1.spring-aop包 该包是在spring-context依赖下的子包&#xff0c;所以有context就有aop <dependency><groupId>org.springframework</groupId><artifactId>spring-con…