Python PIL 图像处理库 FileNotFoundError

7

我目前正在开发一个tkinter(GUI)项目,它可以接收用户的平均值并将其返回给他们。我希望使用PIL库在父窗口中显示图像。昨天这个库可以很好地工作,并在目录中定位我的图像,但是今天它似乎找不到目录了,有人可以帮助我并指导我吗?我不知道为什么今天PIL库出了问题,通常它都可以正常工作。(我已经尝试重新安装文件但没有效果!)。

这是我的代码

import tkinter
from PIL import Image, ImageTk

root = tkinter.Tk();

def showImg():
    load = Image.open('Desktop\example.jpg')
    render = ImageTk.PhotoImage(load)

    img = tkinter.Label(root, image = render)
    img.image = render
    img.pack()

button = tkinter.Button(root, text='Click me to see an image.', command=showImg).pack();

root.title('Imaging test');
root.geometry('450x450');
root.mainloop();

这是我的错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
    return self.func(*args)
  File "C:\Users\Pamal\Desktop\Documents\Python Folder\Python [Learn]\imaging_example.py", line 7, in showImg
    load = Image.open('Desktop\example.jpg')
  File "C:\Python34\lib\site-packages\PIL\Image.py", line 2219, in open
    fp = builtins.open(fp, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'Desktop\\example.jpg 

对我来说,文本 FileNotFoundError: [Errno 2] No such file or directory: 'Desktop\example.jpg' 没有意义。就在昨天,当我使用PIL库时,我能够正常显示图像而没有收到此错误消息,但今天我只得到了这个错误消息。我甚至尝试指定文件路径到C:\,但它不接受。请有人帮帮我,我需要在我的tkinter(GUI)父窗口中获取图像,但这个库不允许。 (附言:我已经尝试重新安装PIL,但没有改变一点,如果您知道任何[易于使用]成像库,请告诉我)。

你应该知道:

  • 我正在运行Python 3.4.2
  • Windows 8.1机器
  • 我不是Python专家,所以请不要给我展示一些复杂的代码。

下面是我最近收到的错误的图像。我为图像提供了特定位置,但仍然收到这个烦人的错误。还有人解释为什么会有两个[//]斜杠,即使我只输入了一个。这是否影响我的文件位置?我用黄色突出显示它们,抱歉,我只是想引起你的注意,也是我新来的堆栈溢出,所以哎呀: P My error

它是否与这行有关: Closer look.


你的脚本和图片在哪里?你的用户名是什么? - Malik Brahimi
尝试:r'C:\Users\Pamal\Desktop\example.jpg' - Malik Brahimi
是的,上面那个位置是文件所在的正确目录,但我仍然收到错误信息,有什么我可以做的吗?或者有更好的编写代码的方法(替代方案)吗? - user4610150
我已经提供了一张新的截图,请看一下,我的朋友,它可能会帮助你解决我的问题。 - user4610150
这对我来说确实很好用。你确定它们放在了正确的位置吗? - Malik Brahimi
显示剩余5条评论
3个回答

4

从您的回溯信息中,您的脚本似乎位于 - C:\Users\Pamal\Desktop\Documents\Python Folder\Python [Learn]\imaging_example.py

但是,您正在尝试使用相对路径访问(桌面文件夹)中的某些内容 - Desktop\example.jpg

这样不会起作用,除非您的脚本位于 - C:\Users\Pamal

更好的方法是提供绝对路径,例如 - C:\Users\Pamal\Desktop\example.jpg

代码 -

load = Image.open(r'C:\Users\Pamal\Desktop\example.jpg')

文件未找到错误:[Errno 2] 没有这样的文件或目录:'C:\Users\Pamal\Desktop\example.jpg'(我现在遇到了这个错误)。此外,图像是否必须与我的脚本在同一个目录/文件夹中?最后,Image.open(r'directory')中的r是什么意思/做什么用?我尝试了您说的具体方法,但仍然收到错误消息。另外,即使我只输入一个反斜杠,也会在错误消息中出现两个反斜杠。 - user4610150
在字符串前面加上 r 可以将其转换为原始字符串,这意味着其中的 \\ 不会被转义。 - Anand S Kumar
好的,谢谢您向我解释。但是,伙计,它仍然不能按照我的意愿工作,我仍然会收到错误信息,还有其他方法吗?此外,图像必须与脚本位于同一位置吗? - user4610150
我提供了一张新的截图,显示更新后的错误信息,这是在我将目录路径更加具体化之后出现的。 - user4610150

2

我遇到了和你一样的问题。几个月前我运行了一个非常好用的程序,但今天它出现了同样的错误。我的解决方法是将目录更改为您的主目录。例如,以前我从桌面上的文件夹中加载图像(即~/Desktop/images/example.png),但我将目录更改为我的主目录环境(即~/home/pouyan/images/example.png),这样就可以无错误地运行。


2

更新后的代码: 我似乎已经解决了这个错误,但我不明白为什么。我使用了一个不同的图像,在我的图片文件夹而不是桌面上,它似乎起作用了。虽然我不明白为什么?有人注意到我的第一段代码和下面的代码有什么不同吗?

解决方案


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接