在Windows上复制文件时出现“IOError [Errno 13] 权限被拒绝”

4 投票
3 回答
2707 浏览
提问于 2025-04-16 10:06

我写了一个程序,它会把一个叫做 a.exe 的文件复制到 C:/Windows/ 这个文件夹里。然后我用 PyInstaller 把它打包成 exe 文件,并把这个 exe 文件重命名为 a.exe。当我运行这个 exe 文件时,它显示了一个错误信息:IOError [Errno 13] Permisson denied: 'C:/Windows/a.exe',但是文件 a.exe 确实已经复制到了 C:/Windows 这个目录里。然后我以管理员身份运行它,结果还是出现了同样的问题... 一开始,我是用 shututil.copy 来复制文件的,后来我自己写了一个函数(打开 a.exe,在 C:/Windows 下创建 a.exe,读取 a.exe 的内容并写入到 C:/Windows/a.exe,然后关闭所有),但这也没有解决问题...有没有什么建议?

3 个回答

0

看起来你正在尝试执行一个文件,而这个文件会自己移动到别的地方……我想这样是行不通的。

0

在Windows系统中,你能复制正在打开的文件吗?我记得好像是不行的,因为在你执行复制的时候,文件是处于打开状态的。

那这个文件真的被复制了吗?在复制之前它在那个地方是不存在的吗?它是把整个文件都复制了吗?

4

检查一下a.exe文件是否是只读属性。如果这个文件是只读的,当你用shutil.copy去覆盖一个已经存在的文件时,就会出现“权限被拒绝”的错误。

撰写回答