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

Error 32: The process cannot access the file

如果图像在尝试使用 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)

您应该在完成后立即关闭原始文件。现在您不保存副本,所以 open/convert 分两步进行。在尝试使用它之前将 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()