错误32:进程无法访问该文件

时间:2017-05-09 18:05:41

标签: python python-imaging-library

我试图删除一个图像,如果它在尝试用PIL打开它时会引发IOError,但由于某些原因我的尝试,除了这里的设置不起作用。

当我运行它时,它会给出错误: WindowsError:[错误32]该进程无法访问该文件,因为该文件正由另一个进程使用:

dir_src = 'D:\\images'
folderlist = os.listdir(dir_src)

for folder in folderlist:
    flag = False
    dir_src_fine = dir_src + '\\' + folder
    filelist = os.listdir(dir_src_fine)

    for x in filelist:
        flag = False
        name = dir_src_fine + "\\" + x

        try:
            im = Image.open(name).convert('RGB')
            im.close()

        except IOError:
            os.remove(name)

1 个答案:

答案 0 :(得分:1)

您应该在完成后立即关闭原始文件。现在你不保存副本,所以打开/转换分两步。在尝试使用它之前将im初始化为None,并在异常中包含关闭逻辑以确保它确实已被释放。

dir_src = 'D:\\images'
folderlist = os.listdir(dir_src)

for folder in folderlist:
    flag = False
    dir_src_fine = dir_src + '\\' + folder
    filelist = os.listdir(dir_src_fine)

    for x in filelist:
        flag = False
        name = dir_src_fine + "\\" + x

        im = im2 = None
        try:
            im = Image.open(name)
            im2 = im.convert('RGB')
            im.close()

        except IOError:
            if im:
                im.close()
            os.remove(name)
        finally:
            if im:
                im.close()
            if im2:
                im2.close()
相关问题