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()

結果如下:
原來文件名
在這裏插入圖片描述
現在文件名
在這裏插入圖片描述
對應excel文件裏會有記錄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章