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

Python使用shutil.copytree复制文件夹触发FileExistsError如何解决

问题根因

shutil.copytree 方法的默认逻辑是目标路径必须完全不存在,只要你指定的目标文件夹folder_2已经存在(哪怕是空文件夹、之前跑代码中途失败残留的目录),调用时就会直接抛出FileExistsError,和源文件夹里的文件内容无关,所以更换测试文件依然会复现问题。

排查步骤

先打开代码里指定的桌面路径C:\Users\rapid\OneDrive\Desktop,检查是否已经存在名为folder_2的文件夹,绝大多数场景下都是这个残留目录导致的报错。
报错参考截图:
FileExistsError运行报错截图

修复方案

根据你使用的Python版本选择对应方案即可:

  • Python 3.8及以上版本:直接给copytree传入dirs_exist_ok=True参数,允许目标目录已存在,执行时会将源目录内容合并覆盖到目标目录中,修改后代码如下:
import shutil
from pathlib import Path
p = Path(r"C:\Users\rapid\OneDrive\Desktop")
shutil.copytree(p/"folder_1", p/"folder_2", dirs_exist_ok=True)
  • Python 3.8以下版本(无dirs_exist_ok参数):复制前先判断目标路径是否存在,存在则先递归删除目标目录,再执行复制操作:
import shutil
from pathlib import Path
p = Path(r"C:\Users\rapid\OneDrive\Desktop")
target_dir = p / "folder_2"
if target_dir.exists():
    shutil.rmtree(target_dir)
shutil.copytree(p/"folder_1", target_dir)

注意:如果目标目录里有你需要保留的文件,不要直接用rmtree删除,建议手动清理目标目录后再执行复制,或者自己实现文件级别的增量复制逻辑,避免误删数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:51:21