python 文件排序_python对目录下的文件进行 多条件排序

在进入正题之前,先介绍一下基础知识:

1、sort(),方法:就是对列表内容进行正向排序,直接在原列表进行修改,返回的是修改后的列表

lists =[1, 5, 10, 8, 6]

lists.sort()print(lists)>>> [1, 5, 6, 8, 10]

2、sorted() 方法: 对列表进行排序后,返回一个新的列表,而原列表不变。并且sorted()方法可以用在任何数据类型的序列中,而返回的总是一个列表的形式。

lists = [1, 5, 10, 8, 6]

a=sorted(lists)print(lists)>>>[1, 5, 10, 8, 6]print(a)>>>[1, 5, 6, 8, 10]

3、进行多条件排序,使用参数 key 即可,其返回的顺序就是按照元组的顺序 。如果想要第一个顺序,第二个逆序,只需要在 x[1] 前面加上 -x[1]

lists = [(2, 5), (2, 3), (1, 2), (4, 2), (3, 4)]

lists.sort(key=lambda x: (x[0], x[1]))print(lists)>>>[(1, 2), (2, 3), (2, 5), (3, 4), (4, 2)]

好,介绍完之后,下面进入正题,自定义顺序 读取文件 多条件排序。

如图,要让下面这些文件进行自己想要的顺序排序,首先根据月份排,然后依据日期排;即先五月,从 5_1 到 5_15,然后再到 6_1 ,如果只是单纯的采用 sort() 和sorted()肯定是不能实现的,需要自定义方式,进行排序。

1693706-20190606183927081-341299549.png

那么怎么来排序呢?

思路就是: 先对文件进行分割,得到 月份 和 天数,然后利用sort() 的key值,进行排序。

importos

path= '..\\url\\'file_selected=os.listdir(path)

month= ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

file_tem=[]

file_comp=[]for file infile_selected:

file_tem.append(file)#[file]

value = file.split("_")[1].split(" ")[0]

ind= month.index(value) #得到月份的下标

file_tem.append(ind) #[file,ind]

num = int(file.split("_")[1].split(" ")[1]) #得到天数

file_tem.append(num) #[file,ind,num]

file_comp.append(file_tem) #得到[[file,ind,num],[file2,ind2,num2]]的形式

file_tem =[]

file_comp.sort(key=lambda x: (x[1], x[2])) #根据ind排,再根据num2 排

sorted_file = [x[0] for x infile_comp]print(sorted_file)

最终得到结果:

['Comprehensive Risk Report_May 1_ 2019 9-00-36 AM 076.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','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_Jun 1_ 2019 9-00-27 AM 541.html']

这里为什么采用 file_tem = [ ] 而不是采用 file_tem.clear(),将在下一篇介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,可以使用Python内置的`sorted`函数和`os`模块来实现文件信息排序,具体步骤如下: 1. 使用`os.listdir`函数获取目标文件夹中所有文件文件名,并保存在一个列表中。 2. 遍历列表中的每个文件名,使用`os.path.join`函数将文件名与目标文件夹路径拼接,获取文件的完整路径。 3. 使用`os.path.getmtime`函数获取文件的最后修改时间,并将该时间作为元组的第一个元素。 4. 将文件名和修改时间元组作为一个元素添加到另一个列表中。 5. 使用`sorted`函数对文件名和修改时间元组的列表进行排序排序的关键字为元组的第一个元素(即修改时间)。 6. 遍历排序后的列表,输出排序后的文件名和修改时间信息。 下面是示例代码: ```python import os folder_path = "your/folder/path" # 目标文件夹路径 # 获取目标文件夹中所有文件文件名 file_names = os.listdir(folder_path) # 遍历所有文件,获取文件名和修改时间信息 file_info = [] for name in file_names: file_path = os.path.join(folder_path, name) # 文件的完整路径 mtime = os.path.getmtime(file_path) # 文件的最后修改时间 file_info.append((name, mtime)) # 将文件名和修改时间元组作为一个元素添加到列表中 # 按照修改时间排序文件信息列表 sorted_file_info = sorted(file_info, key=lambda x: x[1]) # 输出排序后的文件名和修改时间信息 for name, mtime in sorted_file_info: print(f"{name} - {mtime}") ``` 请将`your/folder/path`替换为目标文件夹的实际路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值