Это хорошая идея, чтобы иметь опцию 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)
Незначительное обновление
Если вы хотите сохранить текущую лексическую порядок файлов, вы бы просто нужно отсортировать исходный список файлов:
files = sorted(f for f in os.listdir('.') if f[-4:].lower() in ('.jpg','.png'))
Если вам нужно что-то более сложное, например, извлечение существующего номера индекса из имени файла и переформатирование его, лучше всего открыть другой вопрос.
Кстати, вы можете сделать 'для индекса, filename в перечислении (файлы):'. – glglgl