python遍历⽂件夹排序_python顺序读取⽂件夹下⾯的⽂件
(⾃定义排序⽅式)
我们在读取⽂件夹下⾯的⽂件时,有时是希望能够按照相应的顺序来读取,但是 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',
python怎么读文件夹下的文件夹'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)
思路很简单,就是把⽂件名根据 _ 和 空格 分割,得到中间的数字,然后进⾏排序;然后将排好的数字⼀⼀对应到相应的⽂件名,就得到了排好了的⽂件。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。