栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

使用python批量重命名+移动照片

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用python批量重命名+移动照片

参考这里: 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:/IVdatasetIR1.png’, ‘D:/IVdatasetIR10.png’, ‘D:/IVdatasetIR11.png’, …‘D:/IVdatasetIR22.bmp’, ‘D:/IVdatasetVIS22.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:/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()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/355726.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号