跟着输入一遍就了解了
东西不多的,你就复制粘贴,然后看看结果就了解了。
我这个讲解的内容,主要是针对yolov5代码中应用到的参数写的,需要的话,好好看看,不浪费时间的
一.简单应用:
import argparse
#1.创建解释器
parser = argparse.ArgumentParser()
#2.添加需要的参数
parser.add_argument('-a','--apple',choices=['big-apple','small-apple'])#'-a'为简称格式是-xxx '--apple'是确切名称 choices=['big-apple','small-apple']是我只能在这里头选,不在这里头就报错
parser.add_argument('--number', type=int, default=0)#'--number'定义的确切的变量名称,type=int变量的格式,默认值
parser.add_argument('fruit')#'fruit'定义的确切的变量名称,如果命令行输入的没有指定是给哪个变量输入,那就得是给这个了,而且必须得有输入,否则报错:argparsemodel.py: error: the following arguments are required: fruit
#进行参数解析
args = parser.parse_args()
#输出args的内容
print('-----args----', args)
#输出args中a变量的内容
print('----args.a----', args.apple)
#这里不能是args.a不能用简称去表示,不然会报错 AttributeError: 'Namespace' object has no attribute 'a'
r'''
(pytorch) PS C:\Users\11366\Desktop\yolov5-5.0> python C:\Users\11366\Desktop\yolov5-5.0\yolo代码解析\argparsemodel.py apple
输出:
-----args---- Namespace(apple=None, fruit='apple', number=0)
----args.a---- None
'''
r'''
python C:\Users\11366\Desktop\yolov5-5.0\yolo代码解析\argparsemodel.py -a big-apple tomota
输出:
-----args---- Namespace(apple='big-apple', fruit='tomota', number=0)
----args.a---- big-apple
'''
r'''
python C:\Users\11366\Desktop\yolov5-5.0\yolo代码解析\argparsemodel.py --number 123456 dododo
输出:
-----args---- Namespace(apple=None, fruit='dododo', number=123456)
----args.a---- None
'''
二.help示例:
import argparse
#1.创建解释器
parser = argparse.ArgumentParser()
#2.添加需要的参数
parser.add_argument('-a','--apple',choices=['big-apple','small-apple'], help="变量:苹果")#'-a'为简称格式是-xxx '--apple'是确切名称 choices=['big-apple','small-apple']是我只能在这里头选,不在这里头就报错
parser.add_argument('--number', type=int, default=0, help="变量数字")#'--number'定义的确切的变量名称,type=int变量的格式,默认值
parser.add_argument('fruit', help="变量:水果")#'fruit'定义的确切的变量名称,如果命令行输入的没有指定是给哪个变量输入,那就得是给这个了,而且必须得有输入,否则报错:argparsemodel.py: error: the following arguments are required: fruit
#进行参数解析
args = parser.parse_args()
#输出args的内容
print('-----args----', args)
#输出args中a变量的内容
print('----args.a----', args.apple)
#这里不能是args.a不能用简称去表示,不然会报错 AttributeError: 'Namespace' object has no attribute 'a'
输出:
r'''
python C:\Users\11366\Desktop\yolov5-5.0\yolo代码解析\argparsemodel.py -h
输出:
usage: argparsemodel.py [-h] [-a {big-apple,small-apple}] [--number NUMBER] fruit #用来说明一下其中的内容和怎么用
positional arguments:#用来说明一下必须输入的变量,即:位置参数
fruit 变量:水果
optional arguments:#用来说明一下任意变量都有哪些以及他的备注help的内容
-h, --help show this help message and exit
-a {big-apple,small-apple}, --apple {big-apple,small-apple}
变量:苹果
--number NUMBER 变量数字
'''
三.action示例:
store 保存参数值,可能会先将参数值转换成另一个数据类型。若没有显式指定动作,则默认为该动作。
store_const 保存一个被定义为参数规格一部分的值,而不是一个来自参数解析而来的值。这通常用于实现非布尔值的命令行标记。
store_ture/store_false 保存相应的布尔值。这两个动作被用于实现布尔开关。
append 将值保存到一个列表中。若参数重复出现,则保存多个值。
append_const 将一个定义在参数规格中的值保存到一个列表中。
version 打印关于程序的版本信息,然后退出
原文链接:https://blog.csdn.net/Drievn/article/details/70821188
#1.创建解释器
parser = argparse.ArgumentParser()
#2.添加需要的参数
parser.add_argument('-a','--apple', action="store_true", help="变量:苹果")#'-a'为简称格式是-xxx '--apple'是确切名称 choices=['big-apple','small-apple']是我只能在这里头选,不在这里头就报错
parser.add_argument('--number', type=int, default=0, help="变量数字")#'--number'定义的确切的变量名称,type=int变量的格式,默认值
parser.add_argument('fruit', help="变量:水果")#'fruit'定义的确切的变量名称,如果命令行输入的没有指定是给哪个变量输入,那就得是给这个了,而且必须得有输入,否则报错:argparsemodel.py: error: the following arguments are required: fruit
#进行参数解析
args = parser.parse_args()
#输出args的内容
print('-----args----', args)
#输出args中a变量的内容
print('----args.a----', args.apple)
#这里不能是args.a不能用简称去表示,不然会报错 AttributeError: 'Namespace' object has no attribute 'a'
这里主要看store_true这个功能,即:若触发test_action,则为True,否则为False:
注意:加入action的时候,不能加入choices选项不然报错TypeError: init() got an unexpected keyword argument ‘choices’
输入:python C:\Users\11366\Desktop\yolov5-5.0\yolo代码解析\argparsemodel.py --apple
输出:
-----args---- Namespace(apple=True, fruit=‘big-apple’, number=0)
----args.a---- True
如若输入:(pytorch) PS C:\Users\11366\Desktop\yolov5-5.0> python C:\Users\11366\Desktop\yolov5-5.0\yolo代码解析\argparsemodel.py --apple big-apple aaa
会报错:
usage: argparsemodel.py [-h] [-a] [–number NUMBER] fruit
argparsemodel.py: error: unrecognized arguments: aaa
原因:未知
参考网站1:https://blog.csdn.net/qq_40520596/article/details/112260228?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166747787516782427472097%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166747787516782427472097&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-1-112260228-null-null.142v62pc_rank_34_queryrelevant25,201v3control_1,213v1t3_esquery_v2&utm_term=argparse%E6%A8%A1%E5%9D%97dest%E5%8F%82%E6%95%B0&spm=1018.2226.3001.4187
参考网站2:https://blog.csdn.net/Drievn/article/details/70821188
四.nargs
改变代码:parser.add_argument('--number', type=int,nargs=2, default=0, help="变量数字")
输入、输出:
'''
输入:python C:\Users\11366\Desktop\yolov5-5.0\yolo代码解析\argparsemodel.py --numbe 1
输出:usage: argparsemodel.py [-h] [-a] [--number NUMBER NUMBER] fruit
argparsemodel.py: error: argument --number: expected 2 arguments
缺少变量
再输入:(pytorch) PS C:\Users\11366\Desktop\yolov5-5.0> python C:\Users\11366\Desktop\yolov5-5.0\yolo代码解析\argparsemodel.py --numbe 1 2 banana
输出:-----args---- Namespace(apple=False, fruit='banana', number=[1, 2])
----args.a---- False
'''
最后附上:
转载于上一个网站