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

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)

 

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值