错误:PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。"+文件路径"的解决方案

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

posted @ 2019-12-16 13:57  |旧市拾荒|  阅读(34073)  评论(2编辑  收藏  举报