我的代码用于查看文件夹并删除分辨率为 1920x1080 的图像的脚本。我遇到的问题是当我的代码运行时;
import os
from PIL import Image
while True:
img_dir = r"C:\Users\Harold\Google Drive\wallpapers"
for filename in os.listdir(img_dir):
filepath = os.path.join(img_dir, filename)
im = Image.open(filepath)
x, y = im.size
totalsize = x*y
if totalsize < 2073600:
os.remove(filepath)
我收到此错误消息:
Traceback (most recent call last):
File "C:\Users\Harold\Desktop\imagefilter.py", line 12, in <module>
os.remove(filepath)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'C:\\Users\\Harold\\Google Drive\\wallpapers\\Car - ABT Audi RS6-R [OS] [1600x1060].jpg'
确认一下,Python 是我电脑上运行的唯一程序。是什么导致了这个问题,我该如何解决?
原文由 user2885647 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的进程是打开文件的进程(通过
im
仍然存在)。您需要先关闭它,然后再删除它。我不知道 PIL 是否支持
with
上下文,但如果支持:这将确保在您到达
os.remove
之前删除im
(并关闭文件)。如果不是,您可能想查看 Pillow,因为 PIL 开发几乎已经死了。