我们在读取文件夹下面的文件时,有时是希望能够按照相应的顺序来读取,但是 file_lists=os.listdir()返回的文件名不一定是顺序的,也就是说结果是不固定的。就比如读取下面这些文件,希望能够按照图中的顺序进行读取,但是

得到的结果却是这样:

['Comprehensive Risk Report_May 10_ 2019 9-00-39 AM 314.html',

'Comprehensive Risk Report_May 11_ 2019 9-00-40 AM 031.html',

'Comprehensive Risk Report_May 12_ 2019 9-00-42 AM 145.html',

'Comprehensive Risk Report_May 13_ 2019 9-00-43 AM 490.html',

'Comprehensive Risk Report_May 14_ 2019 9-00-13 AM 544.html',

'Comprehensive Risk Report_May 15_ 2019 9-00-23 AM 408.html',

'Comprehensive Risk Report_May 16_ 2019 9-00-34 AM 028.html',

'Comprehensive Risk Report_May 17_ 2019 9-00-36 AM 892.html',

'Comprehensive Risk Report_May 1_ 2019 9-00-05 AM 861.html',

'Comprehensive Risk Report_May 2_ 2019 9-00-36 AM 076.html',

'Comprehensive Risk Report_May 3_ 2019 9-00-40 AM 593.html',

'Comprehensive Risk Report_May 4_ 2019 9-00-46 AM 963.html',

'Comprehensive Risk Report_May 5_ 2019 9-00-50 AM 724.html',

'Comprehensive Risk Report_May 6_ 2019 9-00-53 AM 563.html',

'Comprehensive Risk Report_May 7_ 2019 9-00-54 AM 080.html',

'Comprehensive Risk Report_May 8_ 2019 9-00-37 AM 000.html',

'Comprehensive Risk Report_May 9_ 2019 9-00-37 AM 935.html']

而且在采用 file_lists.sort()  以及 sorted(file_lists()) 后,结果还是如此.

这是因为文件排序都是按字符串来的,不会特意给你分成数字,根据文件中字符在ascii码中的顺序,并且将字符串中每个字符作比较,得到结果。上面的 11和1_的问题,1相同,而后一位1在_前面,如果换成减号-那它就在1前面,或者将序号放在最后,那排序就正常了,这就是按中间字符排序会出现乱七八糟问题的原因

这时就需要自己根据文件自定义排序:

# 读取文件并进行排序
filelists = os.listdir(path)
sort_num_first = []
for file in filelists:
sort_num_first.append(int(file.split("_")[1].split(" ")[1])) # 根据 _ 分割,然后根据空格分割,转化为数字类型
sort_num_first.sort()
print(sort_num_first)
sorted_file = []
for sort_num in sort_num_first:
for file in filelists:
if str(sort_num) == file.split("_")[1].split(" ")[1]:
sorted_file .append(file) 思路很简单,就是把文件名根据 _ 和 空格 分割,得到中间的数字,然后进行排序;然后将排好的数字一一对应到相应的文件名,就得到了排好了的文件。

python 顺序读取文件夹下面的文件(自定义排序方式)的更多相关文章

  1. python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件)

    # python pandas合并多个excel(xls和xlsx)文件(弹窗选择文件夹和保存文件) import tkinter as tk from tkinter import filedial ...

  2. python 实现彻底删除文件夹和文件夹下的文件

    python 中有很多内置库可以帮忙用来删除文件夹和文件,当面对要删除多个非空文件夹,并且目录层次大于3层以上时,仅使用一种内置方法是无法达到彻底删除文件夹和文件的效果的,比较low的方式是多次调用直 ...

  3. C#文件和文件文件夹按时间、名称排序-顺序与倒序

    对于文件和文件夹有多种排序方式,常用的就是按创建或修改时间.按文件名排序.在 C# 中,按时间和文件名排序都十分简单,用数组提供的排序方法 Array.Sort() 一行代码就可以搞定,当然也可以用常 ...

  4. java读取文件夹下所有文件并替换文件每一行中指定的字符串

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.I ...

  5. php读取excel,以及php打包文件夹为zip文件

    1.把文件下载到本地,放在在Apache环境下2.d.xlsx是某游戏的服务器名和玩家列表,本程序只适合此种xlsx文件结构,其他结构请修改index.php源码3.访问zip.php的功能是把生成的 ...

  6. Unity 从StreamingAssets文件夹和PersistentData文件夹 保存读取AssetBundle资源

    项目中的资源一般我们打包成AssetBundle格式 方便我们加载和热更 而AssetBundle文件 一般保存在StreamingAssets文件夹或则PersistentData文件夹 首先我们看 ...

  7. python实现某目录下将多个文件夹内的文件复制到一个文件夹中

    现实生活中,我们经常有这样的需求,如下图,有三个文件夹,文件夹1内含有1.txt文件 文件夹2中内含有2.txt文件,文件夹3中含有3.txt文件.我们有时候需要把1.txt, 2.txt, 3.tx ...

  8. 基于Python——实现两个文件夹中的文件拷贝

    [背景]当复制一个文件夹中的某文件到另一个文件夹中时是一件很容易的事情,可是如果存在很多文件夹中的文件需要一一拷贝,就会变的很繁琐,稍有不慎就会遗漏,今天就用Python来解决这个问题—— [代码实现 ...

  9. 下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。File构造函数中正确的路径和文件名的表示是( )。

    下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt.File构造函数中正确的路径和文件名的表示是(    ). ./表示当前项目的路径../表示当 ...

随机推荐

  1. 模型压缩之Channel Pruning

    论文地址 channel pruning是指给定一个CNN模型,去掉卷积层的某几个输入channel以及相应的卷积核, 并最小化裁剪channel后与原始输出的误差. 可以分两步来解决: channe ...

  2. Excel技巧:如何绘制一份优秀的甘特图(项目管理)

    作者:秦路,天善智能特约专家.资深数据分析师,数据化运营专家.擅长结合运营和数据,建立数据化运营体系. 个人公众号:秦路(微信ID:tracykanc) 今天我给大家分享的内容是如何利用Excel绘制 ...

  3. 干了这碗蛋炒饭 继续APP性能提升

    [前言] 什么是做功能,功能就是客户要一碗蛋炒饭,然后做了给他. 我想谁都明白,一家餐厅能活下去,是因为能把食材料理好,客户喜欢. 更准确的说,一家餐厅能活得下去,要考虑用户需求.食材,然后就是料理水 ...

  4. android应用程序源码结构分析

    工程; 1. src文件夹存放源码. 2. gen下有跟src中一样的包文件,内部有一个名为R.java类,它是自动生成的一个类:该目录不用我们开发人员维护, 但又非常重要的目录 . 该目录用来存放由 ...

  5. 泰拉瑞亚Linux主机打造指南

    最近玩了泰拉瑞亚,一个2D版的我的世界,但苦于steam的联机太过不靠谱,经常会出现和朋友之间联机失败的问题,所以我把服务器放到了部署我博客的服务器,这样就可以通过IP直接让好友加入游戏了! 首先是购 ...

  6. SQL基本操作总结

    1.SQL简介 结构化查询语言 (层次模型,网状模型,关系模型) 关系模型是目前的主流 (Oralce,mysql mssql ) SQL标准:ANSI (1992 1997 2002 ISO) 方言 ...

  7. Java核心技术卷1 第10版 笔记

    3.3 数据类型 Java是一种强类型语言.必须为每一个变量声明一种类型.在java中,一共有8终基本类型. 3.3.1 整形 类型 存储需求 取值范围 int 4字节 -2 147 483 648 ...

  8. Nginx之反向代理配置(二)

    前文我们聊了Nginx的防盗链.反向代理以及开启nginx代理缓存,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12417130.html:今天我们继续说ng ...

  9. 用canvas实现简单的下雪效果

    首先新建一个html文件,将body的背景设置为天空的那种深蓝色,并创建一个canvas,canvas的操作逻辑都放在snow.js中: <!DOCTYPE html> <head& ...

  10. Xml反序列化记录

    1.概述 公司项目遇到一个需要对接webservice的,webservice大部分用的都是xml来传输的,这里记录一下xml反序列化遇到的问题 2.xml工具类 xml序列化: public sta ...