hahaha~~~,开始写第一个python处理数据脚本,虽然花了些时间,但还是挺开心滴~
有若干图片命名格式为:id_姓名,如下:
现要求根据excel表中内容,批量重命名图片为:id_姓名_部门
(1)从excel表获取符合要求的图片命名名称A
(2)遍历对比excel表中的id和图片中的id
(3)excel表中的id和图片中的id相同,则将图片重命名为A
代码:【excelToimg.py】
# -*- coding:utf8 -*-
import xlrd as xl
import os
import re
from pathlib2 import Path
#从Excel表中提取正确的文件名信息
def readExcel(fileName,sheetName):
xls_file=xl.open_workbook(fileName)#打开文件
# print(len(xls_file.sheets()))#获得表格工作簿的个数(包括空的工作簿)
xls_sheet=xls_file.sheet_by_name(sheetName) #通过工作簿名称获
# xls_sheet=xls_file.sheets()[0]#打开文件簿,第一个文件簿用[0]表示
# rows=xls_sheet.nrows #行数
# columns=xls_sheet.ncols #列数
# row_value=xls_sheet.row_values(0)#第一行所有的值
# col_value=xls_sheet.col_values(0)#第一列所有的值
# value=xls_sheet.row_values(2)[1]#用行索取某行某列的元素,此处读取第三行第二列的内容
# value2=xls_sheet.col_values(1)[1]#用行索取某行某列的元素,此处读取第二列第二行的内容
# value3=xls_sheet.cell(2,0)#cell(row,num)获取单元格的内容
cv0=xls_sheet.col_values(0) #第一行所有的值
cv1=xls_sheet.col_values(1) #第二列所有的值
cv3=xls_sheet.col_values(3) #第四列所有的值
newList=[]
for index in range(len(cv1)):
eId = cv0[index]
name = cv1[index]
department = cv3[index]
if type(eId) != str:
eId = str(int(eId))
# print(f"cv0:{cv0[index]},type:{type(cv0[index])}")
newList.append(eId+'_'+name+'_'+department)
# print(newList[index])
return newList
def renameImg(srcImgDir):
newName=readExcel("test.xlsx","Sheet1")
print(newName)
for item1 in srcImgDir.rglob("*.jpg"):
# 获取图片名称
imgName = item1.name
# imgId=re.findall(r"\d+\d*",imgName)
#提取id
imgId=imgName[0:3]
print(f"提取图片的id:{imgId}")
for item2 in newName:
# eId=re.findall(r"\d+\d*",item2)
eId=item2[0:3]
print(f"输出eId:{eId}")
if eId==imgId:
newImgName=item2+".jpg"
print(newImgName)
item1.rename(newImgName)
if __name__ == '__main__':
#从Excel表中提取正确的文件名信息
# newName=readExcel("test.xlsx","Sheet1")
# print(newName)
srcImgPath = Path("./")
renameImg(srcImgPath)