permissionerror: [errno 13] permission denied的根本原因是操作系统拒绝当前用户访问指定资源,而非python自身问题;常见于读写系统受保护路径(如c:\windows、/etc)、文件被其他进程占用,或普通用户执行需管理员/root权限的操作。
![python脚本运行出现permissionerror: [errno 13] permission denied怎么改?](https://img.php.cn/upload/article/000/969/633/178303013842996.png?x-oss-process=image/resize,p_40)
为什么Python脚本会报 PermissionError: [Errno 13] Permission denied?
根本原因不是Python本身的问题,而是操作系统拒绝了当前用户对某个文件、目录或设备的访问权限。常见于尝试读写受保护路径(如 /etc、C:\Windows\System32)、打开被其他进程占用的文件、或以普通用户身份执行需要管理员/root权限的操作。
注意:这个错误和 FileNotFoundError 完全不同——系统找到了目标路径,但明确说“不许你碰”。
检查并修复文件/目录权限(Linux/macOS)
先用 ls -l 看目标路径的实际权限和所属用户:
$ ls -l /path/to/file.txt -rw-r--r-- 1 root staff 1024 Jan 1 10:00 /path/to/file.txt
如果显示属主是 root,而你当前是普通用户,直接读写就会触发 PermissionError。解决方式取决于场景:
SkillSub Pro - Python 题解与代码注释双功能技能功能概述SkillSub Pro - Python 题解与代码注释双功能技能是一项面向实际任务的技能,主要用于SkillSub Pro 是一个 Python 题解生成与代码注释的 双功能合体技能 ,专为学生、算法学习者和开发者设计;✅ 一个技能,两种用途 :;核心要点📝 题解模式 :输入题目/题号,自动生成完整 Python 题解(含详细注释、解题思路、复杂度分析);💬 注释模式 :输入 Python 代码,自动添加详细中。它将相关步骤、
- 如果是自己创建的文件但误设了权限,用
chmod改(比如chmod 644 file.txt) - 如果是想修改系统配置文件(如
/etc/hosts),不要强行改权限,应改用sudo python script.py启动脚本 - 如果脚本要频繁写入某目录(如日志目录),更安全的做法是把该目录属组设为你的用户组,并加
g+w权限,而不是给所有人777
Windows 下常见的 PermissionError 场景与绕过方法
Windows 的权限模型更隐蔽,尤其容易在以下情况出错:
- 脚本试图写入
C:\Program Files\或C:\Windows下的文件——这些路径默认禁止普通用户写入 - 用
open(..., 'w')打开一个正被记事本、Excel 或 IDE 占用的文件——Windows 锁定文件句柄,Python 拿不到写权限 - 脚本调用
subprocess.run()启动另一个程序(如notepad.exe),但传入了只读文件路径,而目标程序尝试加锁
实操建议:
- 把输出路径改成用户目录,例如
os.path.expanduser("~/output.txt") - 用
try/except PermissionError捕获并提示具体路径,避免静默失败 - 确认没有其他程序正在使用目标文件;必要时任务管理器里结束相关进程
代码里怎么安全处理 PermissionError?
硬扛权限问题不如提前防御或优雅降级。关键不是“怎么让系统给我权限”,而是“当没权限时我能做什么”:
- 用
os.access(path, os.W_OK)预检写权限(注意:它不保证后续操作一定成功,但能筛掉明显不可写的路径) - 捕获异常时打印完整路径:
except PermissionError as e: print(f"无权访问: {e.filename}") - 对日志类写入,可 fallback 到临时目录:
tempfile.gettempdir() - 避免在
__file__所在目录直接写文件——那个位置可能属于安装包或只读环境(如 PyInstaller 打包后)
权限问题最麻烦的地方往往不在报错那一刻,而在于它依赖运行时上下文(谁启动、在哪启动、目标路径归属谁)。调试时务必确认 os.getuid()(Linux/macOS)或当前 Windows 用户是否真有对应权限,而不是只看脚本逻辑。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










