关于UserWarning: Corrupt EXIF data. Expecting to read 4 bytes but only got 0. warnings.warn(str(msg))这种问题的解决办法

今天在跑毕业设计的时候遇到了一个棘手的问题。在打开图像的过程中

遇到了如图所示的warning

于是在网上进行查找解决办法。得知问题是读取的图片已经损坏,我们需要删除这个图片。

很很多帖子要么说捕捉异常,要么忽略这个warning。没有真正地解决问题

后来在stackvoerflow上看到一个帖子,有人给出了正确地做法,在信息来源处让这个warning抛出error,并用try方法地exception方法解决问题。

      except IOError as msg:
            warnings.warn(str(msg))
            return

改成

      except IOError as msg:
            raise ValueError('Corrupt Exif data')
            warnings.warn(str(msg))
            return
 
然后在代码中
def is_valid(file):
    valid = True
    try:
        Image.open(file).load()
    except Exception as e:
        valid = False
    return valid
用exception方法找到error,最后os.remove()这个图像。就成功把引出warning地图像删除了。
之后果然不再提示warning。

 

posted @ 2020-03-27 14:14  chenxingchen  阅读(5882)  评论(1)    收藏  举报