Оптимизация решения задачи python по сортировке названий файлов
Задача следующая:
Напишите программу, которая ищет в папке все файлы с именами, содержащими заданный префикс, такими как spam001.txt, spam002.txt и т.д., и обнаруживает любые пропуски в нумерации файлов (например, имеются файлы spam001.txt и spam003.txt, но отсутствует файл spam002.txt). Программа должна изменять имена файлов с большими номерами таким образом, чтобы ликвидировать имеющиеся пропуски.
Моё решение:
import re
import os
prefix = 'spam'
pattern = re.compile(rf'{re.escape(prefix)}(\d{{3}})\.txt')
def editname(folder):
files = os.listdir(folder)
match = [file for file in files if pattern.match(file)]
match.sort(key=lambda x: int(pattern.match(x).group(1)))
for index, file in enumerate(match, start=1):
newname = f'{prefix}{index:03d}.txt'
path1 = os.path.join(folder, file)
newpath = os.path.join(folder + newname)
if file != newname:
os.rename(path1, newpath)
print(f' {file} => {newname}')
else:
print('Порядок соблюден')
editname(r'C:\Users\User\Desktop\spam')
Я недоволен своим решением. Оно чересчур комплексное, соответственно, написание заняло неприличное количество времени. Хотелось бы узнать, как его можно оптимизировать/другие способы решения.