python操作文件--批量修改文件名,替換文件/文件夾名中的字符串(已使用遞歸算法完善代碼,可通用任何文件目錄)


python操作文件--批量修改文件名,替換文件/文件夾名中的字符串(已使用遞歸算法完善代碼,可通用任何文件目錄)

最近搞了一些課程資源,但是每個文件后面都有+vx的廣告就比較煩,於是寫了個python操作文件批量修改文件名,替換文件/文件夾名中的字符串程序,順手復習一下好久好久大概有2,3年沒寫過的python

遞歸遍歷獲取文件目錄的字典,再遍歷字典根據傳入的參數(想替換的字符串,新字符串,文件目錄字典)修改文件名

import os


# 將傳入參數的文件路徑中的所有文件路徑遞歸遍歷返回到傳入的all_files字典中
def show_files(path, all_files):
    # 首先遍歷當前目錄所有文件及文件夾
    file_list = os.listdir(path)
    # 准備循環判斷每個元素是否是文件夾還是文件,是文件的話,把名稱傳入list,是文件夾的話,遞歸
    for file in file_list:
        # 利用os.path.join()方法取得路徑全名,並存入cur_path變量,否則每次只能遍歷一層目錄
        cur_path = os.path.join(path, file)
        # 判斷是否是文件夾
        if os.path.isdir(cur_path):
            show_files(cur_path, all_files)
        else:
            all_files.setdefault(path, []).append(file)
            # all_files.append(os.path.join(path, file))
    return all_files


# 傳入要替換文件/文件夾中包含的字符串,要替換為的字符串,和文件dict
def modify_file_name(old_str, new_str, all_files, root_src):
    file_count = 0
    modify_folder_count = 0
    modify_file_count = 0
    # 先修改文件名
    for folder in all_files:
        for file in all_files[folder]:
            if old_str in file:
                new_name = file.replace(old_str, new_str)
                os.rename(os.path.join(folder, file), os.path.join(folder, new_name))
                print(file + "已成功修改為: " + new_name)
                modify_file_count += 1
            file_count += 1
    # 再修改文件夾名
    for folder in all_files:
        if old_str in folder:
            os.rename(folder, folder.replace(old_str, new_str))
            modify_folder_count += 1
    return [file_count, modify_folder_count, modify_file_count]


if __name__ == '__main__':
    src = "E:\\我的文件\\教程"
    # 傳入空的dict接收文件名
    get_all_files = show_files(src, {})
    count_list = modify_file_name("【更多IT教程 微信xxx】", "", get_all_files, src)
    print("文件夾數量: " + str(len(get_all_files)))
    print("文件數量: " + str(count_list[0]))
    print("成功修改文件夾: " + str(count_list[1]))
    print("成功修改文件: " + str(count_list[2]))

這是改好的截圖,之前每個后面都有"+vx xxx"字符串

然后每個文件夾中有一堆文件(圖片中已經是修改好的了)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM