当使用os.listdir()时,会导致文件乱序,使用sort不好使,这时需要根据文件特定命名规则去处理一下。
下面两个文件名称中间部分为按时间排序的:
name1_32.2020.3.25.14.55.187000.jpg
name1_32.2020.3.25.9.58.186500.jpg
通过lambda匿名函数,将namelist中的每个元素执行map()映射,转换为int类型,最后在外转换为list,然后sort会根据namelist中每个元素对应位置,以int类型做排序,即2020.3.25.24.55.187000
会被分割为['2020','3','25','24','55','187000'],通过map做映射后会返回tuple,通过list(),转换回列表,sort函数就可以通过列表中的对应位置依次做比较,得到最终排序结果。
namelist = ['name1_32.2020.3.25.9.58.186500.jpg', 'name1_32.2020.3.25.14.55.187000.jpg']
name_list.sort(key=lambda ele: list(map(int, ele.split('.')[1:-1])))