我出现的问题是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 | 在除法或求模运算的第二个参数为零时引发 |