Оптимизация решения задачи 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')

Я недоволен своим решением. Оно чересчур комплексное, соответственно, написание заняло неприличное количество времени. Хотелось бы узнать, как его можно оптимизировать/другие способы решения.


Ответы (0 шт):