2012-03-23 5 views
1

Мне нужна программа, с которой я могу узнать, с какого числа начать, а затем переименуем оттуда.Python: переименовать несколько файлов изображений

Извините, что он должен поддерживать расширение так же, как есть JPG и PNG, может быть, даже GIF.

Так что, если я хочу переименовать, возможно, 10k фото, начиная с «a200» Я мог бы.

Ближайший я пришел это:

import os 

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

Кстати, вы можете сделать 'для индекса, filename в перечислении (файлы):'. – glglgl

ответ

6

Это хорошая идея, чтобы иметь опцию 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')) 

Если вам нужно что-то более сложное, например, извлечение существующего номера индекса из имени файла и переформатирование его, лучше всего открыть другой вопрос.

+0

Спасибо, я попробую. ^^ – Spark

+1

Два небольших correstions: 1) 'if f [-4:]. Lower()' 2) и строка формата должна читать: '" picture-% 05d% s "' – lgwest

+0

Я не вижу, что мои изображения получены 'rename'. – ihue

Смежные вопросы