打开图像错误Python

时间:2013-02-12 16:57:55

标签: python file-io io ioerror

您好大家我正在尝试打开通过链接下载的图片。我在网站上搜索并发现了一些非常有用的东西并将其实现到我的代码中。

*if* __name__ == "__main__":
    import urllib
    droste = urllib.urlopen("http://is.gd/cHqT")
    with open("droste.png", "wb") as imgFile:
        imgFile.write(droste.read())
    print "Got it!"
    droste = Image.open("droste.png")
    while droste:
        droste.show()
        droste = reveal(droste)
        if droste:
            open("droste.png", "wb").write(droste)
            droste = Image.open("droste.png")

错误发生在第7行"droste = Image.open("droste.png")"。我得到一个IOError:无法识别图像文件。我知道图像已被下载,因为代码运行良好,直到该特定行和行print "Got it!"实际确认已下载。我不知道是否需要在打开的参数中指定图像文件的路径而不是图像名称。或者我可能需要检查文件的路径。请帮忙。

1 个答案:

答案 0 :(得分:2)

您的代码正常运行。问题是你如何运行它。您在评论中提到您正在使用PythonAnywhere。 PythonAnywhere没有设置为执行任何图形化操作。它会将图像下载到正确的目录中,但PIL将无法在PythonAnywhere中正常运行。

请尝试以下代码进行测试。

import urllib

if __name__ == "__main__":
    droste = urllib.urlopen("http://is.gd/cHqT")
    with open("droste.png", "wb") as imgFile:
        imgFile.write(droste.read())
    print "Got it!"

    print "Now lets test if it really exists..."
    try:
        with open("droste.png", "rb") as imgFile:
            pass
        print "There were no errors so the file exists"
    except:
        print "ERROR: image was not saved properly!"

如果您使用PythonAnywhere启动BASH会话,您将看到文件droste.png存在,您可以将其下载到您的计算机并查看它。你的程序还可以。

如果你真的想要使用你的程序,或者认真对待python编程。你真的应该在本地安装Python到你的计算机。如果要将代码保留在云中,请使用dropbox,github或bitbucket。 PythonAnywhere有用,但通常你只想在你的计算机上安装python。