我在图像处理时,遇到某些函数读路径不能有中文名,比如opencv。当然有其他更方便的解决方法。我这里直接重命名文件,也挺快的。
# 重命名
def rename(path):
class_dict = {
}
i = 0
filelist=os.listdir(path) # 该文件夹下所有的文件(包括文件夹)
names = []
num = []
for files in filelist: # 遍历所有文件
i = i+1
Olddir = os.path.join(path, files) # 原来的文件路径
if os.path.isdir(Olddir): # 如果是文件夹
filename = os.path.splitext(files)[0] # 文件名
filetype = os.path.splitext(files)[1] # 文件扩展名
Newdir = os.path.join(path, str(i) + filetype) # 新的文件路径
os.rename(Olddir, Newdir) # 重命名
names.append(filename)
num.append(i)
filelist2 = os.listdir(Newdir) #文件夹下的文件
j = 0
for files2 in filelist2:
j = j + 1
Olddir2 = os.path.join(Newdir, files2) # 原来的文件路径
filename2 = os.path.splitext(files2)[0] # 文件名
filetype2 = os.path.splitext(files2)[1] # 文件扩展名
Newdir2 = os.path.join(Newdir, str(j) +'_' + filetype2) # 新的文件路径,我从1开始命名,也可以其他名字
os.rename(Olddir2, Newdir2) # 重命名
for i, k in zip(names, num):
class_dict[i] = k
print(class_dict)
write_excel(class_dict) #将原来名字和重命名后名字写在excel里记录
#记录
def write_excel(data):
workbook = xlsxwriter.Workbook(r'./label_number.xlsx')
worksheet = workbook.add_worksheet('sheet2')
worksheet.write(0, 0, 'Oldname')
worksheet.write(0, 1, 'Newname')
for k, i in zip(range(len(data)), data.keys()):
j = data[i]
worksheet.write(k+1, 0, i)
worksheet.write(k+1, 1, j)
workbook.close()