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

相关推荐
我的运维人生4 分钟前
Python技术深度探索:从基础到进阶的实践之旅(第一篇)
开发语言·python·运维开发·技术共享
Bonne journée5 分钟前
‌在Python中,print(f‘‘)是什么?
java·开发语言·python
Two_brushes.18 分钟前
C++ list 容器类的模拟实现
开发语言·c++·list
iiimZoey29 分钟前
Dit架构 diffusion范式分类+应用
人工智能·python
R三哥哥啊31 分钟前
【树莓派5B】IO串口通信使用
python
王俊山IT32 分钟前
C++学习笔记----8、掌握类与对象(五)---- 嵌套类与类中枚举
开发语言·c++·笔记·学习
Bruce_Li_Q33 分钟前
C语言贪吃蛇
c语言·开发语言
互联网时光机1 小时前
python写的window小工具-一键设置ip自动获取ip
网络·windows·python
读心悦1 小时前
修改 MySQL 数据库中的唯一键
数据库·mysql
SCBAiotAigc1 小时前
VSCode debug模式无法跳转进入内置模块
人工智能·vscode·python