参考这里: glob.glob() 函数
查找文件夹下的某格式文件
glob模块用来查找文件目录和文件,返回列表。 glob支持
*: 0个或多个字符
?:一个字符
[]: 指定范围内的字符,如[0-9]匹配数字
定义一个函数查询E盘中以.exe结尾的文件有哪些
def glob_f():
from glob import glob # 导入模块的同名函数
f = glob(r'e:*.exe') # 直接调用函数
for i in f:
print(i)
glob_f()
结果:
查找指定格式的图片:e:ttsetup.exe
e:平板信息.exe
from glob import glob
def find_pic():
folder = "D:/IVdataset/"
path_imgs = []
img_formats = [".png",".bmp"] # 指定的格式
for fmt in img_formats:
path_imgs.extend(glob(folder+'*'+fmt))
print(path_imgs)
find_pic()
输出结果:
测试一下os.path的路径分割,学到了[‘D:/IVdatasetIR1.png’, ‘D:/IVdatasetIR10.png’, ‘D:/IVdatasetIR11.png’, …‘D:/IVdatasetIR22.bmp’, ‘D:/IVdatasetVIS22.bmp’]
path = "D:/IVdataset\IR1.png"
import os
print(os.path.splitext(path)) # ('D:/IVdataset\IR1', '.png')
print(os.path.split(path)) # ('D:/IVdataset', 'IR1.png')
print(os.path.dirname(path)) # D:/IVdataset
print(os.path.basename(path)) # IR1.png
输出:
将两边照片分开(‘D:/IVdatasetIR1’, ‘.png’)
(‘D:/IVdataset’, ‘IR1.png’)
D:/IVdataset
IR1.png
接着上面查找完指定格式照片,之后,在函数内部添加:
import os
ir,vis = [],[]
for p in path_imgs:
ir.append(p) if os.path.basename(p)[:2] == "IR" else vis.append(p)
print(ir,vis)
输出:
创建目标文件夹,然后重命名+移动 首先,如果文件夹不存在,要新建一下文件夹[‘D:/IVdatasetIR1.png’, ‘D:/IVdatasetIR10.png’, …, ‘D:/IVdatasetIR22.bmp’]
[‘D:/IVdatasetVIS1.png’, ‘D:/IVdatasetVIS10.png’, …‘D:/IVdatasetVIS22.bmp’]
一个函数:
def mkdir(dir): "这个函数创建不存在的 路径文件夹" import os if not os.path.exists(dir): os.makedirs(dir) ir_folder = "D:/ir_and_vis/Test_ir/" vis_folder = "D:/ir_and_vis/Test_vi/" mkdir(ir_folder) mkdir(vis_folder)照片批量重命名+移动(会删除原来的图片,相当于移动)
使用os.rename方法,进行批量重命名。
os.rename(i, ir_folder + pic_id + os.path.splitext(i)[1])
上面一句的含义是,比如i是'D:/IVdataset\IR1.png',它会重命名为D:/ir_and_vis/Test_ir/1.png',这也是下面的循环实现的效果。 在这个过程中,保留了原图的格式,但是改变了存放的文件夹,以及文件名。
for index,(i,v) in enumerate(zip(ir,vis)):
pic_id = str(index + 1)
os.rename(i, ir_folder + pic_id + os.path.splitext(i)[1])
os.rename(v, vis_folder + pic_id + os.path.splitext(v)[1])
完整代码:
from glob import glob
import os
def find_pic():
# 拿到文件夹下所以图片的路径
folder = "D:/IVdataset/"
path_imgs = []
img_formats = [".png",".bmp"]
for fmt in img_formats:
path_imgs.extend(glob(folder+'*'+fmt))
# 分为2类:ir和vis
ir,vis = [],[]
for p in path_imgs:
ir.append(p) if os.path.basename(p)[:2] == "IR" else vis.append(p)
# print(ir,vis)
# 若目标文件夹不存在,则创建
def mkdir(dir):
if not os.path.exists(dir):
os.makedirs(dir)
ir_folder = "D:/ir_and_vis/Test_ir/"
vis_folder = "D:/ir_and_vis/Test_vi/"
mkdir(ir_folder)
mkdir(vis_folder)
# 将源文件夹中图片,重命名后放入新文件夹(移动)
for index,(i,v) in enumerate(zip(ir,vis)):
pic_id = str(index + 1)
os.rename(i, ir_folder + pic_id + os.path.splitext(i)[1])
os.rename(v, vis_folder + pic_id + os.path.splitext(v)[1])
find_pic()



