2026/4/15 19:14:17
网站建设
项目流程
宜黄建设局网站,成品网站 智能建站,制作网站开发用的图片,可视化网页制作工具import os
import shutildef batch_rename_csv(folder_path, replace_oldNMOS, replace_newNMOS, case_insensitiveTrue, recursiveFalse):批量修改指定文件夹下CSV文件的名称#xff0c;支持大小写不敏感、递归处理子文件夹、管理员权限兼容:param folder_…import os import shutil def batch_rename_csv(folder_path, replace_oldNMOS, replace_newNMOS, case_insensitiveTrue, recursiveFalse): 批量修改指定文件夹下CSV文件的名称支持大小写不敏感、递归处理子文件夹、管理员权限兼容 :param folder_path: 目标文件夹路径绝对路径/相对路径 :param replace_old: 要替换的旧字符串默认NMOS :param replace_new: 替换后的新字符串默认NMOS :param case_insensitive: 是否大小写不敏感默认True :param recursive: 是否递归处理子文件夹默认False # 检查文件夹是否存在 if not os.path.isdir(folder_path): print(f错误文件夹 {folder_path} 不存在) return # 遍历文件夹recursiveTrue时递归处理子文件夹 for root, dirs, files in os.walk(folder_path): for file_name in files: # 筛选.csv文件 if not file_name.endswith(.csv): continue # 处理大小写不敏感的匹配 file_name_lower file_name.lower() old_str_lower replace_old.lower() if case_insensitive: if old_str_lower not in file_name_lower: continue # 替换所有大小写形式的旧字符串如NMOS/NMOS/NMOS都替换为NMOS new_file_name file_name # 先按小写匹配替换确保全部替换 import re new_file_name re.sub(re.escape(replace_old), replace_new, new_file_name, flagsre.IGNORECASE) else: if replace_old not in file_name: continue new_file_name file_name.replace(replace_old, replace_new) # 构造旧文件和新文件的完整路径 old_file_path os.path.join(root, file_name) new_file_path os.path.join(root, new_file_name) # 跳过自身文件名未变化的情况 if old_file_path new_file_path: continue # 处理重名问题可选覆盖/跳过/添加后缀 if os.path.exists(new_file_path): # 方案1跳过原逻辑 # print(f警告新文件名 {new_file_name} 已存在跳过该文件) # continue # 方案2强制覆盖谨慎使用会替换原有文件 # os.remove(new_file_path) # 删除原有文件 # os.rename(old_file_path, new_file_path) # print(f强制覆盖{file_name} → {new_file_name}) # 方案3添加数字后缀推荐避免覆盖 count 1 while os.path.exists(new_file_path): name, ext os.path.splitext(new_file_name) new_file_name f{name}_{count}{ext} new_file_path os.path.join(root, new_file_name) count 1 os.rename(old_file_path, new_file_path) print(f重名处理后重命名{file_name} → {new_file_name}) else: try: # 重命名文件兼容不同权限 os.rename(old_file_path, new_file_path) print(f成功{file_name} → {new_file_name}) except PermissionError: # 权限不足时尝试用shutil移动部分场景可绕过权限 try: shutil.move(old_file_path, new_file_path) print(f管理员权限不足使用shutil成功{file_name} → {new_file_name}) except Exception as e: print(f失败{file_name} → 权限不足或文件被占用错误{e}) except Exception as e: print(f失败{file_name} → 未知错误错误{e}) # 若不递归只处理当前文件夹后退出 if not recursive: break print(批量重命名操作完成) # -------------------------- 配置区 -------------------------- # 替换为你的目标文件夹路径 target_folder rC:\Users\a\Desktop\NMOS # 要替换的旧字符串和新字符串可根据需求修改如noms→NMOS replace_old_str nmos replace_new_str NMOS # 是否递归处理子文件夹True/False recursive_process False # ------------------------------------------------------------- if __name__ __main__: batch_rename_csv( folder_pathtarget_folder, replace_oldreplace_old_str, replace_newreplace_new_str, recursiverecursive_process )