参考这里: 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()
输出结果:
[‘D:/IVdataset\IR1.png’, ‘D:/IVdataset\IR10.png’, ‘D:/IVdataset\IR11.png’, …‘D:/IVdataset\IR22.bmp’, ‘D:/IVdataset\VIS22.bmp’]
os.path
的路径分割,学到了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:/IVdataset\IR1’, ‘.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:/IVdataset\IR1.png’, ‘D:/IVdataset\IR10.png’, …, ‘D:/IVdataset\IR22.bmp’]
[‘D:/IVdataset\VIS1.png’, ‘D:/IVdataset\VIS10.png’, …‘D:/IVdataset\VIS22.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()