python---读取excel表格批量重命名图像

hahaha~~~,开始写第一个python处理数据脚本,虽然花了些时间,但还是挺开心滴~

需求描述如下:

有若干图片命名格式为:id_姓名,如下:

python---读取excel表格批量重命名图像_第1张图片

现要求根据excel表中内容,批量重命名图片为:id_姓名_部门

python---读取excel表格批量重命名图像_第2张图片

python---读取excel表格批量重命名图像_第3张图片

解决方案

(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)

 

你可能感兴趣的:(Python)