有序读出文件夹下的文件

file_names = fnmatch.filter(os.listdir(folder), '*.jpeg')

# take care of folder sequence, 1.jpeg, 2.jpeg, 3.jpeg

coll.sort(key=lambda x:int(x[:-5]))

or
file_names.sort(key=lambda x:len(x))

 

1. os.listdir()概述

    os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。

 

例如:

    dir ='F:/Home_01/img'#当前目录

    filenames=os.listdir(dir)#filenames存储dir下的所有文件名。

    注意:os.listdir()返回的文件名不一定是顺序的,也就是说结果是不固定的,如下图,则filenames[0]有可能为‘22.jpg’,而不是我们所希望的‘11.jpg’。

 

    解决办法:

    filenames=os.listdir(dir)

    filenames.sort(key=lambda x:int(x[:-4]))#倒着数第四位'.'为分界线,按照‘.’左边的数字从小到大排序

    此时乱序就变成了顺序:filenames=['11.jpg' , '22.jpg' , '30.jpg'],即filenames[1]='22.jpg';当然可根据自己文件名的特征去决定int(x[:?])中?的值,从哪里去分割排序。

 

posted @ 2019-06-18 16:13  andy_0212  阅读(372)  评论(0编辑  收藏  举报