使用Python批量重命名文件夹中的文件
目测这已经是第5次有人找我帮忙根据某个Excel中的表格名单对照片进行重命名了!感觉有必要简单分享一下使用Python
来批量重命名文件的小脚本,先上代码:
# -*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import os
import xlrd
data = xlrd.open_workbook("name-list.xlsx")
table = data.sheets()[0]
info_dic = {}
for row_index in range(table.nrows):
info_dic[table.cell(row_index, 0).value] = table.cell(row_index, 1).value
student_names = []
lucky_students = {}
path = "C:\\Users\\Documents\\"
new_path = "C:\\Users\\Documents\\new-folder"
for file in os.listdir(path):
if os.path.isfile(os.path.join(path, file)) == True:
if file.find('.jpg') < 0:
print file
else:
student_number = file.split('.')[0]
if student_number in info_dic.keys():
student_name = info_dic[student_number]
if student_name in student_names:
student_name = student_name + '-' + str(student_names.count(student_name))
student_names.append(student_name)
new_name = student_name + '.jpg'
os.rename(os.path.join(path, file), os.path.join(new_path, new_name))
代码逻辑很简单,如果看不懂上面代码的同学请看完我的解说再去面壁一下!其思路是这样的:首先读有名单的Excel表格(一般里面会有一列姓名一列学号/工号这样的),然后遍历path
指定的目录,如果该文件名中没有.jpg
那就不是图片文件,忽略掉;如果是图片文件则查找该图片文件名是不是在Excel表格名单中,在的话就使用Excel表格中对应的姓名去重命名该图片文件。
我在重命名过程中遇到两个问题,也给大家分享一下:
1. rename
函数中的路径必须是绝对路径,否则会出现WindowsError: [Error 2]
错误;
2. 如果重命名时该文件名已经在目标路径存在了,会出现WindowsError: [Error 183]
错误,这时候该怎么处理就看自己啦,在文件名后面加上随机字符串或者时间戳或者计数什么的都行!