python - 检测引发异常的原因

标签 python python-2.7 exception

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

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

但是,我意识到当硬盘驱动器上没有剩余空间时也可能引发IOError。我想检测引起 IOError 的原因(无法连接到 example.com/没有剩余空间),并显示正确的错误消息。

我该怎么做?谢谢!

最佳答案

正如zoosuck所说,您可以使用多个 except 语句来区分错误。如果你想区分 IOError,请查看 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'!"

关于python - 检测引发异常的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28213092/

相关文章:

python - 使用 pandas,如果另一列不为空,如何使用 dataframe 查找列值?

python - Tensorflow 权重矩阵秩误差

language-agnostic - 捕获异常时真的会影响性能吗?

java - Objects.requireNonNull(T obj) 而不是 null 检查并手动抛出 IllegalArgumentException?

python-2.7 - Windows 上的 Theano + Cuda 8.0 - 编译错误

java - 联合测试: Test multiple Exception

python - 从文本中提取表情符号

python - 如何停止计时器滴答声

python - 使用 whoosh 进行 django haystack 模块搜索

python - 尝试绘制曼德尔布罗特集 - 无论如何,总是得到纯黑色图像