首页·报错信息

python · Python

报错原文

PermissionError: [Errno 13] Permission denied

这是什么意思

操作系统拒绝了对那个路径的这个操作。你在往别人拥有的地方写,比如 /var/log 或 /usr;或者容器里挂载卷的 UID 和容器用户不一致;或者——最容易被漏掉的——你缺的是所在目录的写权限而不是文件的,而新建文件需要的正是目录权限。先用 ls -ld 看属主和权限位;在动用 sudo 之前,先考虑把路径换到你本来就能写的地方:用 sudo 建出来的文件,下次不带 sudo 打开时会再报同一个错。

怎么修

ls -ld /var/log/app.log
来自
python
Python
18

Python 的 traceback 把答案劈成两半——最后一行说「错了什么」,上面的帧说「错在哪里」——所以只读最后一行,你会拿到名字却丢掉位置;而 NoneType、KeyError 这类「值不存在」的错误,原因几乎总在崩溃那一帧的上面。

怎么读报错

  • 从第一行往下读。越往下越是工具内部的事,起因通常写在最上面。
  • 有文件名和行号就从那里查——不是栈顶那一帧,而是最上面那条提到你自己写的文件的行。
  • 把报错原文照样去搜,但先去掉你自己的路径和变量名,正是那些让搜索匹配不上。
  • 同一种情况在不同版本里措辞不同。结果不对头,就把版本号一起加进查询。
  • 粘贴修法之前,先确认它会丢掉什么。这里面有些是不能撤回的。

常见问题

Q. “PermissionError: [Errno 13] Permission denied” 是什么意思?

操作系统拒绝了对那个路径的这个操作。你在往别人拥有的地方写,比如 /var/log 或 /usr;或者容器里挂载卷的 UID 和容器用户不一致;或者——最容易被漏掉的——你缺的是所在目录的写权限而不是文件的,而新建文件需要的正是目录权限。先用 ls -ld 看属主和权限位;在动用 sudo 之前,先考虑把路径换到你本来就能写的地方:用 sudo 建出来的文件,下次不带 sudo 打开时会再报同一个错。

Q. 怎么修?

ls -ld /var/log/app.log —— 执行前先看上面的说明,确认这条命令会丢掉什么。

Q. 这是哪个工具报的?

python。它属于Python,报错原文有 5 个词。

相关报错