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
相关产品推荐
相关产品推荐

