如何用Python在Windows 10中批量移动CSV文件并处理重名
实现方案
核心思路
- 遍历E盘所有子目录,筛选出
.csv格式文件 - 检查目标目录是否存在,不存在则自动创建
- 对每个待移动文件,生成不重复的目标文件名(重名时添加
_数字后缀) - 执行文件移动操作
完整代码
import os import shutil # 配置路径 SOURCE_DIR = "E:\\" TARGET_DIR = "D:\\CSV_Files" # 创建目标目录(如果不存在) os.makedirs(TARGET_DIR, exist_ok=True) # 遍历E盘所有文件 for root, dirs, files in os.walk(SOURCE_DIR): for file in files: # 筛选CSV文件(不区分大小写) if file.lower().endswith(".csv"): # 源文件完整路径 source_path = os.path.join(root, file) # 拆分文件名和扩展名 file_name, ext = os.path.splitext(file) # 初始目标文件名 target_file = file target_path = os.path.join(TARGET_DIR, target_file) # 计数器,用于生成唯一后缀 count = 2 # 循环检查文件名是否已存在,直到找到可用的 while os.path.exists(target_path): target_file = f"{file_name}_{count}{ext}" target_path = os.path.join(TARGET_DIR, target_file) count += 1 # 执行移动操作 shutil.move(source_path, target_path) print(f"已移动: {source_path} -> {target_path}")
关键细节说明
- 不区分大小写的CSV筛选:用
file.lower().endswith(".csv"),避免漏检.CSV、.Csv等格式的文件 - 安全的文件名生成:通过循环递增计数器,确保每次都能找到唯一的文件名,不会出现重复覆盖
- 目录自动创建:
os.makedirs(TARGET_DIR, exist_ok=True)会自动创建目标目录,无需手动提前创建 - 路径兼容性:用
os.path.join拼接路径,适配Windows系统的路径分隔符
常见问题排查
- 如果出现权限错误:确保Python进程有访问E盘文件和写入D盘目录的权限
- 如果遍历速度慢:E盘文件较多时,遍历会需要一定时间,耐心等待即可
- 如果特殊字符文件名处理异常:Windows文件名支持的特殊字符都能正常处理,无需额外编码转换
内容的提问来源于stack exchange,提问作者UntiedMy Mind
相关产品推荐
相关产品推荐

