在训练模型的时候,第一步就要加载模型,常常会涉及很多文件夹的操作,将其归纳整理:
1.检查文件夹是否存在
import os
if os.path.exists(i) is False:
raise FileNotFoundError(f"file {i} does not exists.")
2.路径的拼接
os.path.join(root, x)
import os
#将两个字符合并成一个路径
x='dataset'
root =./
os.path.join(root, x)
3.读取一个路径下所有的文件返回一个列表
os.listdir(root)
4.将文件名在指定字符出分割
比如实例代码中将文件名'image_path'遇到'_'分割一次,将分割后的结果返回为一个列表
filename = image_path.split('_')[-1][:-len(".jpg")]
5.常用的lambda和map函数
lambda函数和map函数常常结合在一起形成一个小连招,比如在示例代码中,
image_paths = list(map(lambda x: os.path.join(root, x), os.listdir(root)))
5.1? lambda函数是一个没有函数名的函数,常用格式为
name = lambda [list] : 表达式
而map是python内置函数,会根据提供的函数对指定的序列做映射。
map()函数的格式是:
5.2? ?map(function,iterable,...)
将可迭代变量中的值一次带入function进行运算
这一行代码可以理解为
(1)先调用os.listdir(root)读取root路径下所有的文件名,形成一个列表
(2)这里的lambda函数,将x代入os.path.join(root,x)做一个路径的拼接
(3)使用map函数,将(1)中获得的列表中的文件名依次带入lamba函数
也就说这一句话的作用是 读取root路径下所有的文件,转换成列表