问题描述
在一个目录中,所有文件的格式都是basename- {0-padded-index} .ext格式,如何才能按排序顺序获取这些文件。 文件名示例:
b3a7c672b9a34da68c4caab04f758cd2-000.png
b3a7c672b9a34da68c4caab04f758cd2-001.png
b3a7c672b9a34da68c4caab04f758cd2-002.png
...
b3a7c672b9a34da68c4caab04f758cd2-010.png
b3a7c672b9a34da68c4caab04f758cd2-011.png
...
b3a7c672b9a34da68c4caab04f758cd2-099.png
b3a7c672b9a34da68c4caab04f758cd2-100.png
0填充索引(001、002、010等)不固定。 可以是2位或更多零填充。 排序后,我可以得到第一个文件,这是真正的问题。
1楼
import os
filenames = os.listdir('path/to/directory')
filenames.sort(key=lambda s: int(s.rsplit('.', 1)[0].rsplit('-', 1)[1]))
first_one = filenames[0]
真正的窍门是sort
的关键函数,它获取文件名的相关部分并将其转换为int
。
因此,所有文件名将按文件扩展名之前的编号排序