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

Python如何向只读文件夹复制文件?Win11权限报错问题问询

核心误区先排查

90%的同类报错和文件夹只读属性无关,是shutil.copyfile()的参数传错了:
shutil.copyfile(src, dst) 要求dst必须是完整的目标文件路径,不能直接传目标文件夹路径。如果你把文件夹路径作为dst传入,函数会尝试把文件夹本身当文件打开写入,必然触发PermissionError: [Errno 13],和你开不开管理员、改不改只读属性没有任何关系。

如果需要直接传入目标文件夹路径完成复制,换用shutil.copy(src, dst_folder)即可,这个方法支持dst为文件夹,会自动保留源文件名完成复制。如果坚持用copyfile,就手动拼接完整目标文件路径:

import os
import shutil

src = r"C:\your\source\file.txt"
dst_folder = r"D:\your\target\folder"
# 拼接得到完整目标文件路径
dst = os.path.join(dst_folder, os.path.basename(src))
shutil.copyfile(src, dst)

权限类问题排查(传参正确仍报错时处理)

你之前折腾的文件夹只读属性本身就是无效操作:Windows资源管理器里文件夹的"只读"勾选框只对文件夹内的文件生效,不控制文件夹本身的写入权限,手动修改后自动恢复是系统默认设计,不是异常,跑attrib -r命令改文件夹属性完全是白费功夫。
按以下顺序排查真实权限拦截点:

  • 检查Windows安全中心的受控文件夹访问功能:Win11默认开启的勒索软件防护会拦截未授信程序往受保护目录(包括桌面、文档、图片等用户目录,以及你手动加入保护列表的文件夹)写入文件,这个拦截优先级最高,就算管理员权限也绕不过。要么把你的Python解释器、运行脚本的IDE加入该功能的允许应用列表,要么临时关闭功能测试是否复现报错。
  • 校验目标文件夹的NTFS权限:右键文件夹-属性-安全,找到你运行程序所用的用户账号,确认是否勾选了"修改""写入"权限。如果没有权限,可直接在图形界面修改,也可以在管理员权限的终端里执行以下命令授权:
    icacls "你的目标文件夹完整路径" /grant 你的Windows用户名:(OI)(CI)M /T
    命令中(OI)(CI)代表权限继承到所有子文件/子文件夹,M代表授予修改写入权限,/T代表递归生效。
  • 确认提权操作生效:如果目标文件夹在Program Files、Windows系统目录、C盘根目录这类UAC保护路径下,必须右键点击你运行脚本用的终端/IDE,选择"以管理员身份运行"启动后再执行脚本,仅在代码里申请权限、或当前账号是管理员身份但启动程序没走提权流程,都不会拿到真正的管理员写入权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:24:30