我有900个图像文件(所有png,jpg或gif)。我正在尝试编写一个快速代码,它将获取每个图像文件并将其重命名为1-900的数字(顺序无关紧要,只是它们各自都是唯一的)。我的尝试如下:
"""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完成处理
我不确定错误的含义或如何从此处进行故障排除。有小费吗?我也很想知道你们中的一些人可以采取哪些其他/更有效的方式来做到这一点。
答案 0 :(得分:4)
Image.open()
打开图像并读取其标题,但仍然保持文件打开,因此操作系统无法重命名。
重命名前尝试del img
,或尝试img.load()
强制加载数据并释放图像文件。