You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将.dat文件移至目标文件夹,重名时自动递增重命名

解决.dat文件移动时的重名自动递增重命名问题

原代码直接使用shutil.move移动文件,当目标文件夹存在同名文件时会触发错误(Windows环境)或直接覆盖文件,无法实现重名时自动生成file(1).dat这类递增序号文件名的需求。以下是优化后的代码:

from pathlib import Path
import glob
import shutil

src_fldr = r"C:\OUTBOX" 
dst_fldr = r"C:\OUTBOX\OUTBOX(Backup)"

# 确保目标文件夹存在,不存在则自动创建
Path(dst_fldr).mkdir(exist_ok=True)

for dat_file_path in glob.glob(f"{src_fldr}\\*.dat"):
    src_path = Path(dat_file_path)
    # 拆分文件名主体和扩展名
    file_base = src_path.stem
    file_ext = src_path.suffix
    # 初始化目标文件路径
    target_path = Path(dst_fldr) / src_path.name
    
    # 循环检测重名,生成递增序号的文件名
    count = 1
    while target_path.exists():
        new_filename = f"{file_base}({count}){file_ext}"
        target_path = Path(dst_fldr) / new_filename
        count += 1
    
    # 执行文件移动
    shutil.move(str(src_path), str(target_path))

关键逻辑说明

  • 路径处理:使用pathlib.Path替代字符串拼接路径,适配不同操作系统的路径规则,避免手动拼接出错
  • 目标文件夹预检查:mkdir(exist_ok=True)确保目标文件夹存在,无需额外判断
  • 重名处理:通过循环检测目标路径是否存在,每次递增序号生成新文件名,直到找到未被占用的文件名,保证不会覆盖已有文件
  • 兼容性:将Path对象转为字符串传入shutil.move,适配不同Python版本的API要求

内容的提问来源于stack exchange,提问作者Miko Efa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:30:54