Python:重命名多个图像文件

Spa*_*ark 2 python rename image

我需要一个程序,我可以告诉我从哪个号码开始,然后从那里重命名.

扭转是它必须保持扩展相同的,因为有两个JPGPNG,甚至可能GIF.

因此,如果我想重命名10k图片,a200可以从" " 开始.

我最接近的是:

import os

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

Mat*_*ttH 7

在进行文件重命名时有一个dryrun选项是个好主意,所以你可以看到在进行任何不容易反转的更改之前会发生什么...

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

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)
Run Code Online (Sandbox Code Playgroud)

次要更新

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

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

如果你想要更复杂的东西,比如从文件名中提取现有的索引号并重新格式化它,那么最好打开另一个问题.