Python:重命名多个图像文件

Python:重命名多个图像文件,python,image,rename,Python,Image,Rename,我需要一个程序,我可以告诉什么数字开始,然后从那里重命名 问题是它必须保持扩展名不变,因为既有JPG又有PNG,甚至可能是GIF 因此,如果我想重命名从“a200”开始的10k张图片,我可以 最接近我的是: import os files = os.listdir('.') index = 0 for filename in files: os.rename(filename, str(index).zfill(5)+ '.jpg') index += 1 在进行文件重命名时

我需要一个程序,我可以告诉什么数字开始,然后从那里重命名

问题是它必须保持扩展名不变,因为既有
JPG
又有
PNG
,甚至可能是
GIF

因此,如果我想重命名从“
a200
”开始的10k张图片,我可以

最接近我的是:

import os

files = os.listdir('.')
index = 0
for filename in files:
    os.rename(filename, str(index).zfill(5)+ '.jpg')
    index += 1

在进行文件重命名时,最好有一个“干运行”选项,这样您就可以在进行任何不太容易反转的更改之前看到会发生什么

你应该检查新名字是否已经存在

import os

# Create a list of files from the current directory who's last 4 characters
# as lowercase are either '.jpg' or '.png'
files = [ f for f in os.listdir('.') if f[-4:].lower() in ('.jpg','.png') ]

DRYRUN=True

for (index,filename) in enumerate(files):
  extension = os.path.splitext(filename)[1]
  newname = "picture-%05d%s" % (index,extension)
  if os.path.exists(newname):
    print "Cannot rename %s to %s, already exists" % (filename,newname)
    continue
  if DRYRUN:
    print "Would rename %s to %s" % (filename,newname)
  else:
    print "Renaming %s to %s" % (filename,newname)
    os.rename(filename,newname)

小更新

如果要保留文件的当前词法顺序,只需对初始文件列表进行排序:

files = sorted(f for f in os.listdir('.') if f[-4:].lower() in ('.jpg','.png'))

如果你想做更复杂的事情,比如从文件名中提取一个现有的索引号并重新格式化,最好再问一个问题。

BTW,你可以在enumerate(files)中为索引、文件名做
。谢谢,我会尝试一下^^两个小错误:1)
如果f[-4:].lower()
2),格式字符串应为:
“图片-%05d%s”
我看不到我的图像得到了
rename
@Igwest:感谢您的更正,没有您,此代码根本无法工作!谢谢你!我想知道是否有可能让它重命名jpgs 1-x的顺序出现在文件夹中?e、 g.当我运行此命令时,我得到
将图片366.PNG重命名为1341.PNG
,我希望它重命名为366