【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使用

相关推荐
兮动人3 分钟前
Java应用全链路故障排查实战指南:从系统资源到JVM深度诊断
java·开发语言·jvm
bianguanyue3 分钟前
SQLite密码修改故障排查:RSA加密随机性导致的数据库匹配问题
数据库·sqlite·c#
R-sz13 分钟前
导出word并且插入图片
开发语言·c#·word
亚马逊云开发者14 分钟前
将 Go 应用从 x86 平台迁移至 Amazon Graviton:场景剖析与最佳实践
linux·数据库·golang
CodeWithMe14 分钟前
【读书笔记】《C++ Software Design》第一章《The Art of Software Design》
开发语言·c++
脑袋大大的32 分钟前
判断当前是否为钉钉环境
开发语言·前端·javascript·钉钉·企业应用开发
运器12334 分钟前
【一起来学AI大模型】PyTorch DataLoader 实战指南
大数据·人工智能·pytorch·python·深度学习·ai·ai编程
音元系统37 分钟前
Copilot 在 VS Code 中的免费替代方案
python·github·copilot
超龄超能程序猿1 小时前
(5)机器学习小白入门 YOLOv:数据需求与图像不足应对策略
人工智能·python·机器学习·numpy·pandas·scipy
Wy. Lsy1 小时前
Kotlin基础学习记录
开发语言·学习·kotlin