解决python语言里os.listdir(path)乱序问题
刚改了一版代码后发现我测试集的准确率降到4%,顿时感觉毕业遥遥无期,真是跪了orz。后来调试时发现,os.listdir(path)在执行的时候读取的path下的文件不是按照window下的字典序,规律毫无。 在下面的图片中,左边的图片显示的是根目录下的文件夹,右边的是利用下面的语句打印出来的:
#path是指根目录 for file_name in os.listdir(path): print(file_name)
我们能发现利用os.listdir列举出来的文件夹是无规律的。 — 所以我们要手动将os.listdir按照字典序进行排列,代码如下:
rootpath = os.listdir(path) rootpath.sort(key= lambda x:int(x)) for filename in os.listdir(rootpath): print(filename)
这样打印出来的结果就是按顺序。 — 注意事项: 1、文件夹的文件名要是数字,不能带有英文字母或者其他符号。 2、由于注意事项1的存在,对于图片的排序,我们必须将".jpg"或者".png"等后缀名去掉再进行排序,即将图片名字的后4位去掉,代码如下:
rootpath = os.listdir(path) rootpath.sort(key= lambda x:int(x[:-4])) for filename in os.listdir(rootpath): print(filename)