Python PIL成像库FileNotFoundError

时间:2015-07-06 14:16:00

标签: python python-3.x

我目前正在开发一个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]没有这样的文件或目录:' Desktop \ example.jpg' 对我没有意义。就在昨天,当我使用PIL库时,我能够很好地显示图像而不会收到此错误消息,但今天我得到的只是此错误消息。我甚至尝试将文件路径指定为C:\但它不会接受它。请有人帮助我,我需要在我的tkinter(GUI)父窗口中获取图像,但是这个库不会允许它。 (P.S我尝试重新安装PIL并且它没有改变,如果您知道任何[易于使用]成像库,请告知我们。)

你应该知道:

  • 我正在使用Python 3.4.2
  • Windows 8.1计算机
  • 我不是Python专家,所以请不要向我展示一些复杂的代码。

以下是我最近收到的错误的图片。我已经为图像提供了一个特定的位置,但我得到了这个恼人的错误。也有人解释为什么即使我只输入了双重[//]空位1.这会影响我的文件位置吗?我很高兴他们黄色,对于大写字母来说很抱歉,我只是因为你的注意力而且我是新的堆叠溢出所以W

My error

是否与此行有关: Closer look.

2 个答案:

答案 0 :(得分:1)

在您的追溯中,您的脚本似乎位于 - 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')

答案 1 :(得分:1)

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

Solution