第一次写文章,自己记性不好,也算是记录一下平时解决一些小问题的方法,水平优先仅供参考。
IDE环境是VS2022,Python3.9,argparse是Python内置模块不需要额外下载。CSDN上关于VS的使用操作都很少,补充一下。
一、argparse模块的原理和简单使用方法
argparse模块是Python的一个用于命令行参数解析的模块,其专业解释已经有很多了,可以去详查,不做赘述,仅谈谈自己的一些理解。
为什么要用argparse模块来为代码导入参数或者文件路径呢?如果是一个简单的项目,输入参数只有几个,当需要更改输入文件的话可以在代码中直接更改,但如果输入参数或文件数量较多,或者更换频繁,再去一行行改代码会显得非常麻烦而且容易出错。argparse模块就是为了解决这个问题,该模块统一从命令行中调用需要使用的参数或文件路径,可以一次性完成输出参数读取工作,更改起来比较方便。
下面是一段典型的使用argparse模块的代码。
import argparse
ap = argparse.ArgumentParser(description= '命令行中传入参数')
ap.add_argument('-d', '--dataset', required=True, help='path to input dataset of images')
#ap.add_argument('-m', '--model', required=True, help='path to output trained model')
#ap.add_argument('-l', '--label-bin', required=True, help='path to output label binarizer')
ap.add_argument('-p', '--plot', required=True, help='path to output accuracy/loss plot')
args = vars(ap.parse_args())
print(args)
print("开始读取数据")
首先导入argparse库
import argparse
创建命令行解析端口,其中description中字符串是该解析端口的帮助说明
ap = argparse.ArgumentParser(description= '命令行中传入参数')
创建希望从命令行导入的参数对象,其中-d,--dataset为该参数的长短标签名,二者意义相同,required=True表示该项参数为必选输入项,若非必选可改成False,help为参数帮助说明。
ap.add_argument('-d', '--dataset', required=True, help='path to input dataset of images')
#ap.add_argument('-m', '--model', required=True, help='path to output trained model')
#ap.add_argument('-l', '--label-bin', required=True, help='path to output label binarizer')
ap.add_argument('-p', '--plot', required=True, help='path to output accuracy/loss plot')
该语句表示对参数进行解析,输入的参数储存到args中。
args = vars(ap.parse_args())
后续代码便可调用args完成各项任务。
二、两种代码调试方法
对argparse模块的使用有两种方法:直接命令行窗口调用或VS环境脚本参数调用。
1.命令行窗口调用
为了方便操作,首先用VS打开代码文件,在搜索路径中添加我们需要的文件路径。
菜单输入cmd调用命令行,输入 "cd /d 代码文件路径" 更换工作路径(注意中间加空格),继续输入"python 文件名.py -h"观察输出帮助说明是否正确。
输入"python opencv_test3.2.py --dataset dataset --plot simple_nn_plot.png"参数,这里参数dataset为文件夹,simple_nn_plot.png为图片。
输入成功。
2.利用VS环境调试
直接使用命令行操作不便对代码调试和修改,可选择在VS中设置脚本参数,这样可以对后面代码方便调试。
打开VS,首先添加搜索文件路径,调试→调试属性→调试→脚本参数,输入"--dataset ./dataset --plot ./simple_nn_plot.png"注意输入参数顺序跟代码顺序一致。
效果相同。
如果文件在不同文件夹中也可以填写"--dataset ../model/Keras_learn./dataset --plot ../model/Keras_learn/output./simple_nn_plot.png"之类的详细地址去索引。