【Python实用标准库】argparser使用教程

argparser使用教程

1.介绍

(一)argparse 模块是 Python 内置 的用于命令项选项参数解析的模块,其用主要在两个方面:

  1. 一方面在python文件中可以将算法参数集中 放到一起,对参数进行调整时能够找到文件中参数集中的位置,(主要是调整默认参数);
  2. 另一方面在利用python终端进行调用时,不想进入python文件内部对默认参数调整 ,可以先查看文件参数的使用,然后在终端进行指定修改,然后传递参数进入python文件内部,对其对应参数进行设置;

(二)与argparse在终端设置参数然后传递进入python文件内部相同功能的还有Python内置:sys.argv,但是与argparse传递参数时需要指定参数名,而sys.argv则按照终端参数的顺序传入到sys.argv列表,在python内部则根据列表顺序进行调用。

2.基本使用

argparse定义四个步骤

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

(1)代码示例 如下python文件:argparser.py

python 复制代码
# 1.导入argparse库
import argparse
 
# 2. 定义命令行解析器对象
parser = argparse.ArgumentParser(description='Use of argparse')
 
# 3. 添加命令行参数
parser.add_argument('--model',type=str,default='model name',help='input model')
parser.add_argument('--lr',type=float,default=0.01,help='learning rate')
 
# 4. 从命令行中结构化解析参数
args = parser.parse_args()

# 5.输出或调用解析参数
print(args)# 打印全部参数信息
print('show {}  {}'.format(args.model, args.lr))

(2)终端查看使用

bash 复制代码
python argparser.py -h  #可以查看设置的参数使用说明

(3)终端运行时修改默认参数

bash 复制代码
python argparser.py --model resnet50

(4) sys.argv的命令行参数

sys.argv的使用

  1. 当Python脚本被执行时,命令行参数被传递给脚本,并以列表形式存储在 sys.argv 列表中,通俗将就是:将命令终端python文件名 +终端调用参数名加入到sys.argv之中,这样可以将终端输入的参数传递到python文件内部中
  2. 在argparser.py文件内部可以设置parm1=sys.argv[0],即设置的param1的变量值为终端传递的argparser.py的路径名
  3. sys.argv在少量参数 时使用,在文件含有大量参数时推荐使用argparse
bash 复制代码
python python argparser.py --model resnet50 #就会把argparser.py --model resnet50传递进入sys.argv,形成如下列表

sys.argv是一个列表,在python内部,sys.argv[0]表示python文件名,sys.argv[1]='--model',sys.argv[2]='resnet50'

3.add_argument() 参数设置

名称 说明 备注
name 命令行参数的名字 默认是选项字符串去掉前缀后的结果
action 参数在命令行中出现时应该采取的动作 默认store_true/store_false
default 指定参数的默认值
type 指定命令行参数应该被转换成的类型
choices 指定参数可接受的值的一个容器 只能从可接受值里取值
required 指定参数是否必须提供
help 指定参数的帮助信息
python 复制代码
"""1.基本用法:参数名称model,参数输入值被转化为字符串,required表示参数为必须值(不为可选),
default表示默认为resnet,help为该参数的帮助信息"""
parser.add_argument(name='--model',type=str,required=True,default='resnet',help='input model name')

"""2.action的用法"""
parser.add_argument('--verbose', action='store_true', help='increase output verbosity')
"""运行程序并加上--verbose选项(例如python script.py --verbose),args.verbose的值将会是True"""

"""3.choices"""
parser.add_argument('--food', choices=['apple', 'banana', 'cherry'], help='choose a fruit')
"""--food选项指定一个不是'apple'、'banana'或'cherry'的值(例如python script.py --food orange),argparse将会显示一个错误消息,说明提供的值不是有效的选择。"""

4.参考

(1)参考教程:argparse使用

相关推荐
vxtkjzxt8883 分钟前
手机群控平台的核心功能
数据库·数据仓库
TG_yilongcloud8 分钟前
阿里云国际代理:怎么保障数据库在凭据变更过程中的安全与稳定?
数据库·安全·阿里云·云计算
ACEEE122222 分钟前
Stanford CS336 | Assignment 2 - FlashAttention-v2 Pytorch & Triotn实现
人工智能·pytorch·python·深度学习·机器学习·nlp·transformer
恣艺34 分钟前
Redis有序集合(ZSet):排行榜功能的最优解,原理与实战
数据库·chrome·redis
NG WING YIN42 分钟前
Golang關於信件的
开发语言·深度学习·golang
Sunny_yiyi1 小时前
Java根据模版导出PDF文件
java·开发语言·pdf
麦兜*1 小时前
MongoDB 与 GraphQL 结合:现代 API 开发新范式
java·数据库·spring boot·mongodb·spring·maven·graphql
橘子131 小时前
C++实战:搜索引擎项目(二)
开发语言·c++·搜索引擎
iChochy1 小时前
[开源免费] iGTTS(Gemini TTS) 文本转语音(TTS)的命令行工具。
python·tts·gemini
TwoAI1 小时前
Scikit-learn:从零开始构建你的第一个机器学习模型
python·机器学习·scikit-learn