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

Python实现:将模板子文件夹及其内容复制到新建父目录

解决方法:创建目标目录并复制模板子文件夹及内容

错误原因

你报错的核心问题是直接用DataFrame对象pl_dest拼接路径,但pl_dest是整个DataFrame,不是单个路径字符串,自然没有mkdir方法。你需要遍历pl_dest['Folder_Name_to_create']列中的每个具体路径,再针对每个路径处理子文件夹的创建与复制。

完整实现代码

我们可以结合pathlib处理路径,用shutil.copytree直接复制模板子文件夹及其所有内容(比手动创建空文件夹更高效):

import pathlib
import shutil

# 1. 获取模板目录下的所有子文件夹(带完整路径)
pl_Template_Dir = pathlib.Path("你的模板目录路径")  # 替换成实际模板目录路径
template_subfolders = [entry for entry in pl_Template_Dir.glob('*') if entry.is_dir()]

# 2. 遍历DataFrame中的每个目标目录
for folder_path_str in pl_dest['Folder_Name_to_create']:
    # 转换为Path对象,同时去除路径两端可能存在的空格
    target_root = pathlib.Path(folder_path_str.strip())
    
    # 创建主目录(已存在则跳过,替代原try-except写法)
    target_root.mkdir(exist_ok=True)
    
    # 3. 复制模板的每个子文件夹到目标目录
    for template_subfolder in template_subfolders:
        # 拼接目标子文件夹的完整路径
        target_subfolder = target_root / template_subfolder.name
        # 复制子文件夹及所有内容,已存在则跳过
        shutil.copytree(template_subfolder, target_subfolder, dirs_exist_ok=True)

关键细节说明

  • mkdir(exist_ok=True):Python 3.5+支持,直接替代原来的try-except块,已存在目录时不会报错,代码更简洁
  • shutil.copytree(..., dirs_exist_ok=True):Python 3.8+支持,复制整个目录树(包括子文件夹和内部文件),目标子文件夹已存在时自动跳过,无需额外异常处理
  • folder_path_str.strip():处理你DataFrame中路径末尾的空格,避免创建带空格的错误路径

低Python版本兼容方案

如果你的Python版本低于3.8,shutil.copytree不支持dirs_exist_ok参数,可以用以下方式处理已存在的子文件夹:

for template_subfolder in template_subfolders:
    target_subfolder = target_root / template_subfolder.name
    try:
        shutil.copytree(template_subfolder, target_subfolder)
    except FileExistsError:
        pass

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:05:21