最近在使用python进行筛选图片的时候,想到用python里面的os库进行图片的删除。

具体筛选方法就是,删除掉图片长度或宽度小于100像素的图片,示例代码如下所示:

for file in os.listdir(img_path):
    if file .split( '.' )[ - 1 ] = = 'jpg' :
        img  = Image. open (os.path.join(img_path, file ))
        #img.close()  bug修改代码
        size  = list (img.size)
        if size[ 0 ] >  100 or size[ 1 ] >  100 :
            pass
        else :
            os.remove(os.path.join(img_path, file ))
            print ( file )

在运行上述代码的时候,会报出如下错误:

解决方案:不管是PIL、opencv等python库在open一张图片的时候,我们是不能进行删除操作的,就像错误提示的那样,当前文件被另一个程序使用,解决方法就是加上下面这行代码

img.close()   #bug修改代码

如此,错误成功解决。

总结:

  一、以后不管是图像文件还是txt等文本文件,当我们在进行open的时候,一定要记得close掉,甚至还可以扩展到只要使用了open函数,就一定记得close掉。
  二、在这里只是删除的时候会报这个错误,那么如果是对图片数组进行修改、或者移动图片的时候会不会同样报这个错误呢?这个猜想留待以后验证。

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐