python中读取文件夹中文件名的方法,及os.listdir结果顺序错乱的问题

读取文件夹中文件名的方法:

import os
root_dir = r"E:\研究资料\金属腐蚀\数据及软件\数据及软件\EIS原始数据-sy\20171019" #文件夹目录
files= os.listdir(root_dir) #得到文件夹下的所有文件名称
print(files)

python中读取文件夹中文件名的方法,及os.listdir结果顺序错乱的问题_第1张图片

这样读出来的文件名是没有任何问题的,但是有一个问题就是这个文件名的顺序有问题,看下图,本应该40+的在前,但是由于os.listdir本身的算法设计,导致了这种顺序错乱的问题。比如我本身的顺序是{1,2,3,...,100,101},那他读出来后的顺序会变成{1,100,101...,2,3}

python中读取文件夹中文件名的方法,及os.listdir结果顺序错乱的问题_第2张图片

os.listdir结果顺序错乱的解决方法

如果文件名的排列顺序是按照文件名中的某一个数字排列的,那可以用sort函数来解决顺序错乱的问题,我这个文件来举例,我的文件名是‘171018-1247_#145.DTA ’、‘171018-1247_#41.DTA’这种类型的,文件格式相同,文件名的前面也一样,是靠红色数字来排序的,那就单独把这个数字取出来用来排序即可,lambda x:int(x[13:-4]是将files各项中的从第十四位到倒数第四位取出返回给key,去掉倒数第四位是去掉.dat,这取出来的数字正是文件名排序的数字。

import os
root_dir = r"E:\研究资料\金属腐蚀\数据及软件\数据及软件\EIS原始数据-sy\20171019" #文件夹目录
files= os.listdir(root_dir) #得到文件夹下的所有文件名称
files.sort(key= lambda x:int(x[13:-4]))
for file in files:
    print(file)

python中读取文件夹中文件名的方法,及os.listdir结果顺序错乱的问题_第3张图片

 完成,没有任何问题。

但是如果文件的排序不仅仅是一个数字决定的,这个方法就不太适用了,可以参考这篇博客(20条消息) python读取.txt、.dat等文件,将其中特定内容存到其他文件_一起躺躺躺的博客-CSDN博客_python写入dat文件

你可能感兴趣的:(python语法,数据获取与处理,python)