You need to enable JavaScript to run this app. 如何用shutil.copytree将目录正确复制到指定相对路径
优惠活动
大模型
产品
解决方案
定价
更多

如何用shutil.copytree将目录正确复制到指定相对路径

问题原因

shutil.copytree的内置行为是,将源目录内部的所有文件、子目录直接复制到指定的目标路径下,不会自动在目标路径位置创建与源目录同名的层级。
你之前的代码将目标路径指定为当前目录.,因此函数直接把源目录test/f1内部的asdf文件平铺到了当前根目录,没有生成预期的./f1目录层,最终出现文件直接散出的异常结果。

正确实现方法

要达到和shell命令cp -R test/f1/ .完全一致的效果,需要在定义目标路径时,手动拼接需要保留的源目录名,让函数将内容复制到新建的同名目录下:

shutil.copytree("test/f1", "./f1", dirs_exist_ok=True)

通用适配写法

如果不想硬编码目标路径的目录名,可以提取源路径的最后一段名称自动拼接目标路径,适配任意源目录的复制场景:

import os
import shutil

source_path = "test/f1"
# 提取源目录名,拼接到目标根路径
target_path = os.path.join(".", os.path.basename(source_path))
shutil.copytree(source_path, target_path, dirs_exist_ok=True)

执行结果验证

上述代码运行完成后,最终生成的目录结构和预期完全匹配:

  • ./test/f1
  • ./test/f1/asdf
  • ./test/f2
  • ./test/f2/asdf
  • ./f1/
  • ./f1/asdf

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 22:36:02