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

使用Python复制文件夹到指定路径时报PermissionError如何解决

错误原因
  • 接口调用错误:shutil.copy2()仅支持复制单个文件,你传入文件夹路径调用该接口时,操作系统会尝试以读取文件的方式读取文件夹,没有对应操作权限,就会抛出Errno 13权限错误,这是该场景下最常见的触发原因。
  • 实际权限不足:如果排除接口问题后仍报错,可能是两种情况:一是当前Windows账号没有你选中的源文件夹的读取权限,二是你设置的目标路径/data在Windows下默认指向当前磁盘根目录的data文件夹,普通用户默认没有根目录写入权限。
解决方案
  1. 替换文件夹复制接口,使用shutil.copytree()完成文件夹的递归复制,同时补充目标路径的存在性判断,避免重复复制报错。
  2. 修正目标路径写法,Windows环境建议写完整绝对路径(比如C:/data),避免相对路径/根路径的权限问题。
  3. 如果确实是系统权限不足,右键点击你运行代码的IDE或终端,选择以管理员身份运行后再执行代码即可。

修正后可运行代码示例

from tkinter import filedialog
from tkinter import *
import shutil
import os

window = Tk()
window.title("copyfolder")
window.geometry("210x50")

folderPath = StringVar()
def select_folder():
    folder_selected = filedialog.askdirectory()
    # 处理用户主动取消选择文件夹的边界情况
    if not folder_selected:
        return
    folderPath.set(folder_selected)
    src_folder = folderPath.get()
    # 可自行修改为你需要的目标根路径
    target_root = "C:/data"
    # 自动创建目标根目录,不存在则创建,已存在则跳过
    os.makedirs(target_root, exist_ok=True)
    # 保留源文件夹的名称,拼接得到完整目标路径
    folder_name = os.path.basename(src_folder)
    target_full_path = os.path.join(target_root, folder_name)
    # 如果目标路径已存在,先删除原有内容,重要数据请修改为自行重命名逻辑避免误删
    if os.path.exists(target_full_path):
        shutil.rmtree(target_full_path)
    # 递归复制整个文件夹
    shutil.copytree(src_folder, target_full_path)
    print("Complete")

Button(window,text="select",command=select_folder).place(x=80,y=10)

window.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:09:04