Причина, по которой он в настоящее время начинается с ES, заключается в нулевой индексацииКогда i==0
во время первой итерации цикла, ваш код изменяет значение es_or_ed
на ED
.
Я изменил ваш код, чтобы учесть это, а также выполнить правильный вид ваших исходных имен файлов, так как кажется, что у вас нет начальных нулей в именах файлов, и вы хотите, чтобы 10 следовали за 9, а не после 1. Есть функция, которую я позаимствовал из этого answer , которая будет правильно сортировать ваш список имен файлов.
import os
import glob
import re
def natural_sort_key(s, _nsre=re.compile('([0-9]+)')):
return [int(text) if text.isdigit() else text.lower()
for text in _nsre.split(s)]
path = 'F:/my_data/labelsResized/'
fns = glob.glob(path + '*.png')
es_or_ed = 'ED'
for i, fn in enumerate(sorted(fns, key=natural_sort_key)):
# Check for ED or ES
if (i+1) % 3 == 1 and es_or_ed == 'ED':
es_or_ed = 'ES'
elif (i+1) % 3 == 1 and es_or_ed == 'ES':
es_or_ed = 'ED'
# Create new filename
new_fn = 'P{}_{}_{}'.format(i // 6 + 1, es_or_ed, i%3+1)
# rename...S
os.rename(fn, os.path.join(path, new_fn + '.png'))
Результат (из кода (не показан), где исходное имя файла добавляется к новому имени файла):