OSError: cannot identify image file

我出现的问题是OSError: cannot identify image file <_io.BytesIO object at 0x7f02cad50780>,但是这个不能作为标题使用(找了半天原因)。

首先说一下为什么会出现OSError

操作系统不能执行指定的任务(如打开文件)时引发的,有多个子类。
 

我出现的原因是要处理大量的图片,然而有的图片无法打开,所以会出现OSError错误。解决办法是使用try accept解决这个异常。当然也可以直接将这个图片删除。不相信的话,可以做一下测试,这里面的00001.jpg是自己新建的一个文件

import tensorflow as tf
import io
from PIL import Image

img = tf.gfile.FastGFile('00001.jpg','rb')
encoded_jpg = img.read()
encoded_jpg_io = io.BytesIO(encoded_jpg)
image = Image.open(encoded_jpg_io)
height,width = image.size

 

      附带一个python内置的异常类

Exception几乎所有的异常类都是从它派生而来的
AttributeError引用属性或给它赋值失败时引发
OSError   操作系统不能执行指定的任务(如打开文件)时引发,有多个子类
IndexError使用序列中不存在的索引时引发,为LookupError的子类
KeyError使用映射中不存在的键时引发,为LookupError的子类
NameError找不到名称(变量)时引发
SyntaxError代码不正确时引发
TypeError将内置操作或函数用于类型不正确的对象时引发
ValueError将内置操作或函数用于这样的对象时引发的:其类型正确但包含的值不合适
ZeroDivisionError    在除法或求模运算的第二个参数为零时引发

 

如何try except解决类似的问题:

import tensorflow as tf
import io
from PIL import Image

img = tf.gfile.FastGFile('00001.jpg', 'rb')
encoded_jpg = img.read()
encoded_jpg_io = io.BytesIO(encoded_jpg)
try:
    image = Image.open(encoded_jpg_io)
    height, width = image.size
except (OSError, NameError):
    print('OSError')
print('done')

 

 

 


版权声明:本文为pursuit_zhangyu原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。