按正确顺序排序图像

时间:2014-12-09 08:20:16

标签: python image list sorting

我正在尝试从具有特定名称的文件夹中挑选所有图像。

图像具有以下名称:

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]) 

然而,结果并不像预期的那样,因为python没有按正确的顺序对它们进行排序。它使用以下顺序:

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

如何强制python以正确的顺序对图像进行排序?

1 个答案:

答案 0 :(得分:1)

sortedlist.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))
)