本文共 2156 字,大约阅读时间需要 7 分钟。
argparse模块是Python中命令行解析的标准库,广泛应用于机器学习深度学习脚本以及其他需要命令行参数传递的场景。通过argparse,我们可以轻松实现命令行参数的赋值和解析,适用于多种实际应用需求。
argparse模块通过add_argument方法来定义和解析命令行参数。每个参数可以指定默认值、类型、帮助信息等属性,支持位置参数和可选参数。
parser.add_argument("a", help="输出a值")定义,执行python test.py 1时,a参数会自动赋值为1。parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov5s.pt', help='model path or triton URL'),可选参数可选可不选,默认值为ROOT / 'yolov5s.pt'。| 参数属性 | 描述 | 示例 |
|---|---|---|
| action | 指定参数的操作类型 | action="store_true"表示参数赋值为布尔值 |
| nargs | 指定参数的数量 | nargs='+', type=str表示可多选 |
| count | 指定参数出现的次数 | action="count" |
| default | 参数默认值 | default="yolov5s.pt" |
| type | 参数类型 | type=int表示整数类型 |
| choices | 可选值类型 | choices=[0, 1, 2] |
| required | 是否为必填参数 | required=True |
| help | 参数说明 | help="模型路径或triton URL" |
| metavar | 参数显示名称 | metavar=("输入路径", "描述") |
| dest | 参数存储变量名 | dest="model_path" |
| version | 版本信息 | version="1.0.0" |
import argparseparser = argparse.ArgumentParser(description="输出平方数")parser.add_argument("square", type=int)args = parser.parse_args()print(args.square ** 2) 执行python test.py 2,输出4。
import argparseparser = argparse.ArgumentParser(description="输出a值")parser.add_argument("a")args = parser.parse_args()print(args.a) 执行python test.py 2,输出2。
yolov5的主函数为:
if __name__ == "__main__": opt = parse_opt() main(opt)
parse_opt()函数负责解析命令行参数,返回参数对象opt。
def parse_opt(): parser = argparse.ArgumentParser() parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov5s.pt', help='model path or triton URL') parser.add_argument('--source', type=str, default=ROOT / 'data/images', help='file/dir/URL/glob/screen/0(webcam)') parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='(optional) dataset.yaml path') parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640], help='inference size h,w') opt = parser.parse_args() # 其他参数处理逻辑 return opt def main(opt): # 检查依赖包安装情况 check_requirements(exclude=('tensorboard', 'thop')) # 执行运行函数 run(**vars(opt)) 通过以上解析,可以清晰地理解argparse模块在命令行参数处理中的核心作用及其应用场景。
转载地址:http://wilfk.baihongyu.com/