Python--批量重命名文件夹及文件夹下文件

我在图像处理时,遇到某些函数读路径不能有中文名,比如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()

结果如下:
原来文件名
Python--批量重命名文件夹及文件夹下文件_第1张图片
现在文件名
Python--批量重命名文件夹及文件夹下文件_第2张图片
对应excel文件里会有记录。

你可能感兴趣的:(python)