使用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:\\...',不过这不是你这次报错的主要原因。
二、更换代码后成功的原因
你后来的代码做了两个关键修正:
- 路径指向了合法图片文件:
'C:\Users\Dante\Pictures\disco.jpg'是带扩展名的真实图片文件,不是文件夹,函数能正确识别并读取。 - 使用了更适配的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
相关产品推荐
相关产品推荐

