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

使用PIL打开图片时遭遇PermissionError权限拒绝及后续图片显示问题求助

问题分析与解答

一、最初的PermissionError核心原因

你遇到的第一个错误其实不是真的权限不足,而是路径指向错误!看你传入的路径:'C:\Users\Dante\Pictures\Python_flowers'——这个路径没有.jpg/.png这类图片扩展名,大概率它是一个文件夹,而非图片文件。

mpimg.imread()是matplotlib专门用来读取图片文件的函数,当你传入文件夹路径时,它会尝试以“读取文件”的逻辑访问目录,但系统不允许这种操作方式,因此抛出了PermissionError。这也是为什么你检查文件权限、甚至尝试Linux的chmod/chown命令都没用:一是问题根源不在权限,二是chmod/chown是Linux/Unix专属命令,在Windows上完全不适用,自然会引发更多问题。

另外补充个小细节:Windows路径里的反斜杠\在Python字符串中是转义字符,最好写成原始字符串r'C:\...'或者双反斜杠'C:\\...',不过这不是你这次报错的主要原因。

二、更换代码后成功的原因

你后来的代码做了两个关键修正:

  1. 路径指向了合法图片文件:'C:\Users\Dante\Pictures\disco.jpg'是带扩展名的真实图片文件,不是文件夹,函数能正确识别并读取。
  2. 使用了更适配的PIL逻辑:
    • Image.open()是PIL库专门用于加载图片的函数,只要文件存在且你有读取权限(你已经确认过这点),就能成功生成图片对象。
    • img.show()会调用系统默认的图片查看器来显示图片,这个过程依托系统自身的文件访问逻辑,不会像mpimg.imread()那样因路径类型错误触发权限类报错。

三、额外小建议

如果想继续用matplotlib的方式显示图片,只需把路径改成正确的图片文件路径即可,示例代码如下:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg
# 用原始字符串避免转义问题
img = mpimg.imread(r'C:\Users\Dante\Pictures\disco.jpg')
plt.imshow(img)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 18:42:34