argparser使用教程
1.介绍
(一)argparse 模块是 Python 内置 的用于命令项选项 与参数解析的模块,其用主要在两个方面:
- 一方面在python文件中可以将算法参数集中 放到一起,对参数进行调整时能够找到文件中参数集中的位置,(主要是调整默认参数);
- 另一方面在利用python终端进行调用时,不想进入python文件内部对默认参数调整 ,可以先查看文件参数的使用,然后在终端进行指定修改,然后传递参数进入python文件内部,对其对应参数进行设置;
(二)与argparse在终端设置参数然后传递进入python文件内部相同功能的还有Python内置:sys.argv,但是与argparse传递参数时需要指定参数名,而sys.argv则按照终端参数的顺序传入到sys.argv列表,在python内部则根据列表顺序进行调用。
2.基本使用
argparse定义四个步骤
- 导入argparse包 ------import argparse
- 创建一个命令行解析器对象 ------创建 ArgumentParser() 对象
- 给解析器添加命令行参数 ------调用add_argument() 方法添加参数
- 解析命令行的参数 ------使用 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的使用
- 当Python脚本被执行时,命令行参数被传递给脚本,并以列表形式存储在 sys.argv 列表中,通俗将就是:将命令终端python文件名 +终端调用参数名加入到sys.argv之中,这样可以将终端输入的参数传递到python文件内部中
- 在argparser.py文件内部可以设置parm1=sys.argv[0],即设置的param1的变量值为终端传递的argparser.py的路径名
- 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使用