前言
本篇作为一个笔记来使用,在github上或者其他地方下载其他地方下载别人的代码阅读时,常常遇到argparse模块,一开始还以为这是就是写了个类,类里面装了很多需要使用到的变量而已,万万没想到还挺有意思。。。。
argparse模块提供了一种方便的方式来编写用户友好的命令行接口。它可以解析命令行参数和选项,并生成帮助和使用信息等
使用流程如下:
导入模块->创建解析器->添加参数->解析参数
实例化ArgumentParser对象
parser = argparse.ArgumentParser()
nargs
parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov5s-seg.pt', help='model path(s)')
在这里argparse模块添加了一个命令行参数--weights,它接受一个或多个字符串类型的值作为参数。
nargs='+'表示这个参数可以接受一个或多个值,例如python xx.py --weights path1 path2 path3 path4 path5
具体来说,这个参数的格式为--weights value1 value2 value3 ...,其中value1、value2、value3等是任意字符串。如果用户没有提供这个参数,那么它的默认值为ROOT / 'yolov5s-seg.pt',即在根目录下的yolov5s-seg.pt文件。
action
parser.add_argument('--view-img', action='store_true', help='show results')
action='store_true'表示当命令行中包含--view-img参数时,将该参数的值设置为True,否则为False
action参数指定了当命令行中的某个参数被指定时应该执行的动作。常见的动作包括:
store_const: 将一个常量值存储在变量中。
store_true: 将一个布尔值True存储在变量中。
store_false: 将一个布尔值False存储在变量中。
append: 将一个列表追加到另一个列表中。
append_const: 将一个常量值追加到列表中。
count: 统计参数出现的次数。
parse_args
opt = parser.parse_args()
使用argparse模块中的parse_args()方法解析命令行参数,并将解析结果存储在opt对象
例如,如果定义了一个名为--input的参数,那么用户在命令行中使用--input /path/to/file.txt这样的格式来指定输入文件的路径时,parse_args()方法就会将/path/to/file.txt这个字符串存储在opt.input属性中。
一旦所有的参数都被解析完毕,parse_args()方法就会返回一个Namespace对象,其中包含了所有参数及其对应的值。可以将这个对象赋值给一个变量,以便在程序中使用这些参数。