开发者

python如何按照自己顺序读出文件名

开发者 https://www.devze.com 2023-11-19 10:02 出处:网络 作者: JackWang(dog)
目录情景再现为什么os.listdir()读出会乱序?解决乱序(即按照自己的要求排序)该怎么按照我们想要的顺序排列呢?总结情景再现
目录
  • 情景再现
  • 为什么os.listdir()读出会乱序?
  • 解决乱序(即按照自己的要求排序)
  • 该怎么按照我们想要的顺序排列呢?
  • 总结

情景再现

在做一个批量读取文件夹txt文件内容后,将文件内容写入excel表格的简单脚本时使用到了os.listdir()函数。

当脚本完成后检查excel表格内容时发现表格内容顺序和txt文件顺序不一样,这就导致我剩EbisWIj下的工作全部GG(超级难受)。

然后就去着手解决py编程客栈thon os.listdir()读出顺序乱序问题。

为什么os.listdir()读出会乱序?

我也不知道,那位大佬知道了麻烦评论教教我!!!!!

解决乱序(即按照自己的要求排序)

首先看一般情况下读出顺序:

files= os.lhttp://www.devze.comistdir(path) #得到文件夹下的所有文件名称

读出的文件顺序是:

python如何按照自己顺序读出文件名

而在文件夹中所显示的文件排列顺序确实这样的:

python如何按照自己顺序读出文件名

这个顺序是不是很让人摸不到头脑。

该怎么按照我们想要的顺序排列呢?

我后来想一想,这读出来的文件名字不就一列表嘛,我们把这个列表按我们想要的顺序排列好不就可以啦。

我们可以看到文件夹中的排序方式是先按照cache后的数字排序然后再按照第五个字母 a,b,s排序。

所以我们就按照这个方式来排序。

def takeNumber(elem): #获取cache后面的数字
    pattern = re.compile('cache(.+).txt')
    num = int(pattern.findall(elem)[0])
    return num
files= os.listdir(path) #得到文件夹下的所有文件名称
txts = []
all_data = []
files.sort(androidkey=takeNumber)
files.sort(key= lambda x: x[4])   #lambda函数也叫匿名函数,即,函数没有具体的名称

最后看结果就是我们想要的顺序:

python如何按照自己顺序读出文件名

总结

总而言之,读出文件的顺序可以转化为对列表的排序。这类排序没有固定的方法,见招拆招,兵来将挡,水来土掩才是好办法。

另外,对php于正则表达式和lambda匿名函数也要有一定的了解才能做好(别问我是怎么知道的,菜鸡落泪)。

以上仅为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号