Как изменить сортировку списка по имени?
Мой код
import os
path = os.path.dirname(os.path.abspath(__file__))
lst = os.listdir(path2)
lst.sort()
for filename in lst:
print(filename)
Я пытаюсь получить список всех картинок по имени но вместо
0 (1).png 0 (2).png 0 (3).png 0 (4).png 0 (5).pngЯ получаю
0 (1).png 0 (10).png 0 (100).png 0 (101).png 0 (102).pngЯ не понимаю почему так происходит и как это исправить.
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
Если вы хотите, чтобы имена файлов сравнивались как числа, а не строки, то нужно об этом сказать python-у. Например, так:
lst.sort(key=lambda x: int(x.split('.')[0]))
Но если будет хоть одно имя, которое числом не является - программа упадет.
UPD: Вот так по идее работать будет
def my_key(name):
i = name[:name.index(' ')]
j = name[name.index('(')+1:name.index(')')]
return (int(i), int(j))
# ...
lst.sort(key=my_key)