2014-12-09 2 views
0

Я пытаюсь выбрать все изображения из папки с определенным именем.Сортировка изображений в правильном порядке

Изображения имеют следующие названия:

plotChannel1.png, plotChannel2.png, plotChannel3.png, plotChannel4.png, plotChannel5.png, plotChannel6.png, plotChannel7.png, plotChannel8.png, plotChannel9.png, plotChannel10.png, plotChannel12.png, plotChannel13.png, plotChannel14.png, plotChannel5.png, plotChannel6.png 

выбрать изображения, я использую:

dataImage = sort([f for f in os.listdir(os.getcwd()) if f.endswith('.png') and 'Channel' in f]) 

Однако результат не как ожидалось, так как питон не сортируя их в правильном заказ. Он использует следующий порядок:

1, 10, 11, 12, 13, 14, 15, 16, 2, 3, 4, 5, 6, 7, 8, 9 

Как заставить python сортировать изображения в правильном порядке?

ответ

1

sorted или list.sort принимает дополнительный параметр функции key. Передайте функцию, которая преобразует имя файла в число, так что sorted сортируется в соответствии с номером, а не сортирует его лексикографически.

dataImage = sorted(
    [f for f in os.listdir(os.getcwd()) if f.endswith('.png') and 'Channel' in f] 
    key=lambda filename: int(filter(str.isdigit, filename)) 
) 
+0

Thanks falsetru! – codeKiller

Смежные вопросы