Python将文件夹中的照片按名字与Excel中的数据对应并排序,重命名 您所在的位置:网站首页 Excel中的重命名 Python将文件夹中的照片按名字与Excel中的数据对应并排序,重命名

Python将文件夹中的照片按名字与Excel中的数据对应并排序,重命名

#Python将文件夹中的照片按名字与Excel中的数据对应并排序,重命名| 来源: 网络整理| 查看: 265

Python将文件夹中的照片按名字与Excel中的数据对应并排序,重命名

文件夹中是人的照片,照片名是人名,格式是任意图片格式。

目标是按照Excel中表“st”的顺序将他们重新排序,通过重命名来表现排序的结果。

代码如下:

import xlrd import os class BatchRename(): ''' 批量重命名文件夹中的图片文件 ''' def rename(self): self.path = 'D:/code/rename/photos' #表示需要命名处理的文件夹 excel_path = 'D:/code/rename/formnew.xls' # Excel文件路径 names=[] names.append("") print('Excel文件的路径:' + excel_path) excel_file = xlrd.open_workbook(excel_path) # 打开Excel文件 # table = excel_file.sheet_by_index(1) # 通过索引打开 table = excel_file.sheet_by_name('st') # 通过表格名字打开 #table = excel_file.sheets()[1] # 通过索引打开 print('已经打开的工作簿的名字:' + table.name) print('**********开始读取Excel单元格的内容**********') for i in range(table.nrows): cell_value = table.cell(i, 0).value # 获取单元格内容,0列对应名字列 print(cell_value) # 先看看有哪些名字 names.append(cell_value) # Logger().info('[' + ', '.join("'" + str(element) + "'" for element in row_content) + ']') # Logger().info(all_content) if not(os.path.exists("D:/code/rename/photos/new/")): os.makedirs("D:/code/rename/photos/new/") filelist = os.listdir(self.path) #获取文件路径 total_num = len(filelist) #获取文件长度(个数) i = -1 #表示文件的命名是从1开始的 for name in names: i = i + 1 print(name+"::===========================================================::") for item in filelist: if name!="" and item.startswith(name): #初始的图片的格式为jpg格式的(或者源文件是png格式及其他格式,后面的转换格式就可以调整为自己需要的格式即可) src = os.path.join(os.path.abspath(self.path), item) print(src) dst = os.path.join(os.path.abspath(self.path), 'new')#处理后的格式也为jpg格式的,当然这里可以改成png格式 dst = os.path.join(dst, str(i)+'-'+item.split('.')[0] + '-' + str(i) + '.jpg') print(dst) #dst = os.path.join(os.path.abspath(self.path), '0000' + format(str(i), '0>3s') + '.jpg') 这种情况下的命名格式为0000000.jpg形式,可以自主定义想要的格式 try: os.rename(src, dst) print ('converting %s to %s ...' % (src, dst)) break except: continue print("error--------------------------------------------") print ('total %d to rename & converted %d jpgs' % (total_num, i)) #如果数据量较大( >10000条 )可以优化算法:将EXCEL名字和序号扫描丢入哈希表,按照名称将照片和键值对快速排序,双指针动态搜索,匹配,复制。 #时间复杂度O(n*n)>>O(nlogn) if __name__ == '__main__': demo = BatchRename() demo.rename()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有