最近在使用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掉。
二、在这里只是删除的时候会报这个错误,那么如果是对图片数组进行修改、或者移动图片的时候会不会同样报这个错误呢?这个猜想留待以后验证。