import os import time # 如需使用时间戳可引入 def add_suffix_to_files(directory, suffix="_image"): """ 遍历指定目录下的所有文件,如果文件名中不包含指定后缀字符,则在文件名末尾添加该后缀。 如果新文件名已存在,会自动在文件名中插入序号以避免冲突。 :param directory: 要处理的文件夹路径 :param suffix: 要添加的后缀,默认为"_image" """ # 检查目录是否存在 if not os.path.isdir(directory): print(f"错误:目录 '{directory}' 不存在。") return # 获取目录中的所有文件(不包含子目录) all_files = [f for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f))] # 首先,找出所有已经包含后缀的文件,避免重复处理 files_to_rename = [] for filename in all_files: name_part, ext_part = os.path.splitext(filename) # 检查文件名主干中是否不包含后缀(不区分大小写) if suffix.lower() not in name_part.lower(): files_to_rename.append(filename) else: print(f"⏭️ 跳过: {filename} (已包含后缀)") # 遍历需要重命名的文件 for filename in files_to_rename: file_path = os.path.join(directory, filename) name_part, ext_part = os.path.splitext(filename) # 构建基础新文件名 base_new_filename = f"{name_part}{suffix}{ext_part}" base_new_filepath = os.path.join(directory, base_new_filename) new_filename = base_new_filename new_filepath = base_new_filepath # 检查基础新文件名是否存在,如果存在则添加序号 counter = 1 while os.path.exists(new_filepath): # 在主干和后缀之间插入序号,例如 "file_image_1.txt" new_filename = f"{name_part}{suffix}_{counter}{ext_part}" new_filepath = os.path.join(directory, new_filename) counter += 1 # 执行重命名操作 try: os.rename(file_path, new_filepath) # 如果最终使用的文件名与基础新文件名不同,说明添加了序号 if new_filename != base_new_filename: print(f"⚠️ 重命名 (冲突解决): {filename} -> {new_filename} (原名称 {base_new_filename} 已存在)") else: print(f"✅ 已重命名: {filename} -> {new_filename}") except OSError as e: print(f"❌ 重命名 {filename} 时出错: {e}") print("--- 所有文件处理完成 ---") # 使用示例 if __name__ == "__main__": folder_path = r'R:\TYSAR-德清院\D-切片成果\TYSAR-条带模式(SM)\港口\切片结果整理' add_suffix_to_files(folder_path)