检测引发异常的原因

时间:2015-01-29 11:04:22

标签: python python-2.7 exception exception-handling

我制作了一个Python 2.7.9脚本,使用urllib.urlretrieve从网上下载一些照片。我使用tryexcept命令进行了简单的错误听写,如下所示:

try:
    urllib.urlretrieve("http://example.com/image.jpg", "1.jpg")
except IOError:
    print "Could not connect to 'example.com'!"

然而,我意识到当硬盘上没有剩余空间时,IOError也可能被提升。我想检测导致IOError引发的原因(无法连接到example.com/no空格),并显示正确的错误消息。

我该怎么办?谢谢!

1 个答案:

答案 0 :(得分:2)

正如zoosuck所说,你可以区分多个错误,除了 - Statement。如果要区分IOErrors,请查看IOError的文档。它揭示了IOError有一个属性" errno"。您可以使用errno模块(https://docs.python.org/2/library/errno.html)来确定原因:

import urllib
import errno

try: 
    urllib.urlretrieve("http://example.com/image.jpg", "1.jpg")     
except IOError, e:
    if e.errno == errno.ENOSPC:
        print "No space left on device"
    else:
        print "Could not connect to 'example.com'!"