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

Python调用shutil.copyfile备份文件报PermissionError Errno13错误如何解决

问题解决方法

根本原因

你调用shutil.copyfile()的参数不符合接口要求:shutil.copyfile()的第二个参数必须是目标文件的完整路径,不能直接传备份目录路径。你当前直接传入备份目录backupdir(对应报错信息里的E盘根目录),函数会尝试把目录当做普通文件写入,自然触发权限报错,和是否用管理员身份运行无关。

正确实现方案

可选以下两种常用修改方式:

  • 方案1:改用shutil.copy2()(更推荐备份场景使用)
    shutil.copy2()支持目标路径为目录,会自动保留原文件名写入目标目录,同时还会保留文件元数据(创建时间、修改时间、权限等),更适配备份需求:
import os
import shutil

# 直接遍历待备份路径,无需遍历索引
for file_path in contents:
    shutil.copy2(file_path, backupdir)
  • 方案2:坚持使用shutil.copyfile()的修正写法
    需要手动拼接目标文件的完整路径后再传入:
import os
import shutil

for file_path in contents:
    # 提取原文件的文件名
    file_name = os.path.basename(file_path)
    # 拼接得到目标文件的完整路径
    dst_full_path = os.path.join(backupdir, file_name)
    shutil.copyfile(file_path, dst_full_path)

额外排查项

如果修改代码后仍然报错,可依次确认以下事项:

  • 确认contents元组内存储的都是有效文件路径,没有目录路径,如果需要备份完整目录请改用shutil.copytree()
  • 确认E盘根目录没有开启写入保护,当前账户对目标备份目录有可写权限
  • 确认待备份的文件没有被其他程序独占占用,关闭占用文件的程序后再运行脚本即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:12:01