重命名具有连续数字的图像文件的目录

时间:2017-01-16 08:05:59

标签: python

我有900个图像文件(所有png,jpg或gif)。我正在尝试编写一个快速代码,它将获取每个图像文件并将其重命名为1-900的数字(顺序无关紧要,只是它们各自都是唯一的)。我的尝试如下:

renamer.py

"""Rename directory of image files with consecutive numbers"""
#Importing - os to make array of files and rename, Image to check file type
import os
from PIL import Image

#Variables for script
images_dir = "C:\file\directory\pictures\\temp\\"
file_array = os.listdir(images_dir)
file_name = 1

#Loops through each file and renames it to either a png or gif file
for file in file_array:
    img = Image.open(images_dir + file)
    if img.format != "GIF":
        os.rename(images_dir + file, images_dir + str(file_name) + ".png")
    elif img.format == "GIF":
        os.rename(images_dir + file, images_dir + str(file_name) + ".gif")
    file_name = file_name + 1

到目前为止,这根本不起作用。我之前尝试了其他的东西 - 实际上用PIL中的Image打开文件,将其保存在所需的名称下,然后删除原始文件 - 但是在700左右的某个地方总会失败,所以我选择了这种方法;反正似乎效率更高。我正在使用PyCharm,我得到的错误是:

  

C:\ Python27 \ python.exe“renamer.py”

     

追踪(最近一次呼叫最后一次):

     

文件“renamer.py”,第15行,

os.rename(images_dir + file, images_dir + str(file_name) + ".png") 
     

WindowsError:[错误32]进程无法访问该文件,因为它   正在被另一个进程使用

     

使用退出代码1完成处理

我不确定错误的含义或如何从此处进行故障排除。有小费吗?我也很想知道你们中的一些人可以采取哪些其他/更有效的方式来做到这一点。

1 个答案:

答案 0 :(得分:4)

Image.open()打开图像并读取其标题,但仍然保持文件打开,因此操作系统无法重命名。

重命名前尝试del img,或尝试img.load()强制加载数据并释放图像文件。