【问题标题】:Renaming image files if statement is false如果语句为假,则重命名图像文件
【发布时间】: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 添加了答案

标签: python image


【解决方案1】:

重命名img = Image.open("{}/{}.jpg".format(img_dir_path, image))之前请关闭打开的图片

Image.close()

重命名之前

【讨论】:

    猜你喜欢
    • 2015-08-20
    • 1970-01-01
    • 2014-04-02
    • 2014-07-20
    • 2013-05-04
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多