我在圖像處理時,遇到某些函數讀路徑不能有中文名,比如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()
結果如下:
原來文件名
現在文件名
對應excel文件裏會有記錄。