Как распарсить и отсортировать имена файлов?
a = ['file1.txt', 'file10.txt', 'file2.txt']
print(sorted(a, key=lambda x: int(x[4:-4])))
Пояснение по коду. sorted() для строк - сортирует их по алфавиту. Т.е., как оно сортирует АБ АВ БА, так само и для цифр в строке, сначала то что начинается на 1, потом то что на 2 и тд.

Так что для правильной сортировки, подаваемое число-строку нужно из формата строки переводить в число. А там как мы знаем стандартный вид строк, то просто пользуемся срезом [4:-4]
нужно для каждого имени сделать некое соответствие числом, которое в нем заложено.

Создать список этих соответствий и упорядочить по числу.
Если быстро накидать, то что-то вроде этого выйдет:

names = ['file1.txt',
'file100.txt',
'file2.txt']

new_list = []

for name in names:
	number = int(name.replace('file', '').replace('.txt', ''))
	new_list.append((name, number))

sorted_files = [element[0] for element in sorted(new_list, key=lambda x: x[1])]

print(sorted_files) # ['file1.txt', 'file2.txt', 'file100.txt']

Если нужны будут пояснения к коду - пишите