最终效果

背景需求
为了完成区级小课题《运用Python设计幼儿学具的需求研究》,我把大班的学习材料包(大班下学期)的每一份纸类学具都扫描了。


需要根据扫描图片上的名字,来重命名JPG的名字

具体思路:
一、规范扫描图片的名称(排序)
1、第一类:扫描时自动生成的号码“如001.JPG、010.jpg

2、第二类,为了让图片按一定顺序排序,自己编的号码(在049.jpg和050.jpg之间加一张049-02的图片。目的是规定图片排序顺序)

二、把目录提取出来


三、EXCLE里写入新的JPG名称



四、预设的合成名称(Python拼接))

01-01 我们的城市-做客-正面)
01-02 我们的城市-做客-反面)
01-03 我们的城市-做客-粘贴纸
正式运行
步骤一:先把001变成01,02顺序(统一两位数)



import os
import time
path =r"D:\2023-03-14 大班下材料包"
fileList=os.listdir(path)
m=1
for file in fileList:
split_str = file.split('.')
# newname1 = split_str[0] # _的第0部分=序号
# print(newname1)
newname2= split_str[1] # _的第0部分=序号
print(newname2)
newname='{}'.format('%02d'%m)+"."+newname2
oldname_path = os.path.join(path,file)
# 文件新路径
newname_path = os.path.join(path,newname)
# 新旧对调
os.rename(oldname_path, newname_path)
m+=1
排序前

排序后:

以上用途:把编号长度统一,便于抽取数字并替换EXCEL里面的内容
步骤二:EXCLE替换文件名
旧名字:01.JPG 02.JPG
新名字:01-01 我们的城市-做客-正面 02-01 我们的城市-逛超市-正面




1秒生成新名字,并且自动按照编号把同类的正面、反面、黏贴面放在一起。
整体代码
import os
import xlrd
import os
import time
dirpath = 'D:/2023-03-14大班下材料包'#存放图片的文件夹
datapath = 'D:/目录.xlsx'#excel表路径
print('--------1、先把文件名变成数字----------')
fileList=os.listdir(dirpath )
m=1
for file in fileList:
split_str = file.split('.')
# newname1 = split_str[0] # _的第0部分=序号
# print(newname1)
newname2= split_str[1] # _的第0部分=序号
print(newname2)
newname='{}'.format('%02d'%m)+"."+newname2
oldname_path = os.path.join(dirpath,file)
# 文件新路径
newname_path = os.path.join(dirpath,newname)
# 新旧对调
os.rename(oldname_path, newname_path)
m+=1
time.sleep(5)
print('--------2、数字名字体寒程EXCEL里面的合成名字----------')
x1 = xlrd.open_workbook(datapath)#读取excel
sheet1 = x1.sheet_by_name("Sheet1")#读取sheet1
idlist = sheet1.col_values(0)#存放第一列
print(idlist)
# ['数字文件名', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34
xylist = sheet1.col_values(9)#存放第二列
print(xylist)
# '合成', '01-01 我们的城市-做客-正面', '02-01 我们的城市-逛超市-正面', '03-01 我们的城市-上海一日游-正面', '04-01 我们的城市-生活中的标志-正面', '05-01 我们的城市-新车出厂-正面', '06-01 春夏和秋
# 冬-小小气象员-正面', '07-01 春夏和秋冬-雨天上学-正面', '08-01 春夏和秋冬-晴雨表-正面', '09-01 春夏和秋冬-春天拼图-正面', '10-01 春夏和秋冬-美丽的树林-正面', '11-01 春夏和秋冬-插花-正面', '12-01
# 动物大世界-树和喜鹊-正面', '13-01 动物
file_names = os.listdir(dirpath)#获取文件夹下所有图片名称
print(file_names)
# '01.jpg', '02.jpg', '03.jpg', '04.jpg', '05.jpg', '06.jpg', '07.jpg', '08.jpg', '09.jpg', '10.jpg', '11.jpg', '12.jpg', '13.jpg', '14.jpg', '15.jpg', '16.jpg', '17.jpg', '18.jpg', '19.jpg', '20.jpg', '21.jpg', '22.jp
for i in file_names:
print(i)
# '01.jpg'
# '02.jpg',
# '03.jpg'
id = i[0:2]#截取01.jpg前2位
if id in idlist:
xy = xylist[idlist.index(id)]
print(xy)
os.renames(os.path.join(dirpath, i), os.path.join(dirpath, xy +".jpg"))#重命名
最终效果

感悟:
学会了又一种替换文件名称的方法(名称按照一定要求,变成升序数字排列,然后替换成EXCLE里面对应的自己需要的新名字)。
python替换文件名比人工添加名字快几十倍的时间,关键是可以反复修改调试、修改,(前期一定要把资料备份,供反复修改),来满足各种各样的需求,获得工整简洁的样式,提升办公任务的完成效率。
学好python这个办公工具,让解决问题的方法不断更新,更快捷、更有效!