【发布时间】:2017-08-01 11:13:18
【问题描述】:
简单解释一下,我有一个文件夹,我可以在其中放入一些图像。图像的名称是整数,因此例如我可以有 5 个名称为 567.jpg、568.jpg、569.jpg、570.jpg 和 571.jpg 的图像。整数是随机的,但是,它们总是按照上面的顺序出现,即每张图像加一。
所以我想做的是浏览这个文件夹中的图像并查看图像大小。如果图像的宽度低于 600 像素(例如),我想删除此图像并移至下一个图像。现在,如果此图像高于 600 像素,则应将其重命名,使其遵循顺序。
所以原则上应该发生的是:
345.jpg --> 超过 600px --> 没有任何反应 346-jpg --> 低于 600px --> 被删除 347.jph --> 超过 600px --> 重命名为 346.jpg(按照 1 步顺序)
等等……
我已尝试使用以下代码:
import os
from PIL import Image
img_dir_path = "\"
pic_list = range(567,572,1)
for image in pic_list:
img = Image.open("{}/{}.jpg".format(img_dir_path, image))
if img.size[0] < 600:
os.remove("{}/{}.jpg".format(img_dir_path, image))
else:
if os.path.isfile("{}/{}.jpg".format(img_dir_path, int(image)-1)) == False:
os.rename('{}/{}.jpg'.format(img_dir_path, int(image)), '{}/{}.jpg'.format(img_dir_path, int(image)-1))
else:
print "No worries"
但是,这样做时我收到以下错误:
WindowsError: [Error 32] The process cannot access the file because it is being used by another process
对于它的重命名过程...
我知道这是一些草率的代码,但我还不是 Python 专家,所以我通常只是先让它工作,然后再调整。
另外,出现的另一个问题是,当检查真正的第一个条目之前的条目是否存在/是否为假时,现在它总是为假,因为在第一个图像之前当然什么都没有。因此,列表中第一个名称的图像当然不应该重命名。但是,由于我什至无法使其正常工作,因此我不打算尝试解决此问题。
【问题讨论】:
-
在重命名之前关闭打开的图片 img = Image.open("{}/{}.jpg".format(img_dir_path, image))
-
重命名前的Image.close()
-
是的,就是这样。如果您想接受答案,请回答:)
-
感谢@Denver Dang 添加了答案