argparse模块是Python的命令行解析模块,可以很方便的进行参数的传递,而不需要修改源代码。
主要是用在命令行解析,在大工程配置的时候还是使用 config 比较好一些
在实际工程中常用到的地方就是一些参数的设置:比如:dest default action store_true这些参数,明白了这些参数理解大工程的项目也就不难了。
add_argument()常用的参数:
dest:如果提供dest,例如dest="a",那么可以通过args.a访问该参数
default:设置参数的默认值
action:参数出发的动作
store:保存参数,默认
store_const:保存一个被定义为参数规格一部分的值(常量),而不是一个来自参数解析而来的值。
store_ture/store_false:保存相应的布尔值
append:将值保存在一个列表中。
append_const:将一个定义在参数规格中的值(常量)保存在一个列表中。
count:参数出现的次数
parser.add_argument("-v", "--verbosity", action="count", default=0, help="increase output verbosity")
version:打印程序版本信息
type:把从命令行输入的结果转成设置的类型
choice:允许的参数值
parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], help="increase output verbosity")
help:参数命令的介绍
具体更为详细的可以参考官方文档: [Argparse 教程](https://docs.python.org/zh-cn/3/howto/argparse.html)
那么在jupyter notebook中怎么使用这种命令行参数呢?
直接封装为list就行:比如:['--dataset_type','csv','--annotations','xxx/yy.txt'] 类似这样的
简单的使用示例:
argparse的使用主要有三步,创建解析对象,添加命令行参数,进行参数的解析
看代码和注释:
import argparse
#创建一个解析对象,当运行help时description会显示
parser = argparse.ArgumentParser(description='Process some integers.')
#添加命令行参数,有两种,该种是位置参数,以参数的位置为准,比如第一个出现的参数就是复制给integers的
parser.add_argument('integers', metavar='N', type=int, nargs='+',help='an integer for the accumulator')
#第二种:可选参数,该参数调用时必须给出名字,然后后边跟着值,和位置参数不一样,其中'-s','--sum'是
#一样的,都是指的同一个参数,一个是短的,一个是长的,只不过同时出现的话参数默认保存在--sum两个杠的
#参数中
#其中后边跟着很多参数,更深入的用法需要知道各个参数的意义
parser.add_argument('-s','--sum', dest='accumulate', action='store_const',const=sum, default=max, help='sum the integers (default: find the max)')
#进行命令行的解析
args = parser.parse_args()
#调用查看传入参数的值,就和调用类的方法一样args.integers或args.sum
print(args.accumulate(args.integers))
#常见的调用方式有:
#python prog.py -h
#python prog.py 1 2 3 4 --sum
#python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
#..........