Python 对os.listdir()获取的文件列表进行 Windows 的按名称方式排序,natsort 库的应用 |
您所在的位置:网站首页 › win10怎么让文件夹按大小排序 › Python 对os.listdir()获取的文件列表进行 Windows 的按名称方式排序,natsort 库的应用 |
Python 对os.listdir()获取的文件列表进行 Windows 的按名称方式排序,natsort 库的应用
1.前言
日前,使用os.listdir()读取一个文件夹下的所有文件和子文件夹名称,但获得的名称列表和windows的资源管理器的排序并不一致,查了资料说是os.listdir()读取文件是乱序的,要用sorted()或sort()方法排序才可以。然后我就按照方法两个函数都尝试了,但文件名称排序都没有和windows的资源管理器的排序一致。 进一步学习发现,windows的文件排序并不是单纯的按名称字符排序,文件名称有数字时会有一定的调整。 进一步查找资料发现,windows的排序可以叫自然排序,但又和自然排序有一点不一致。又找了一个第三方库,natsort,是nature sort的缩写。这个第三方库可以实现自然排序。 2.实现文件名称自然排序natsort是第三方库,如果之前没有安装可以pip install natsort安装。 测试代码: from natsort import ns, natsorted folder = r"D:\code_python\test_doc" files = os.listdir(folder) files_0 = sorted(files) print('字符排序:') print(files_0) files_1 = natsorted(files,alg=ns.PATH)#要加alg=ns.PATH参数才和windows系统名称排序一致 print('自然排序:') print(files_1)print()输出结果: 字符排序: ['1.txt', '1啊.txt', '1比较.txt', '22_9.txt', '3_22.txt', 'AA.txt', 'a.txt', 'a1.txt', 'a啊.txt', 'b_8.txt', 'vdd.txt', 'ソラ.txt', 'プラネット.txt', '啊a.txt', '比.txt', '比较.txt', '比较1.txt', '比较3.txt', '比较5.txt', '比较6.txt', '比较a.txt', '比较c.txt'] 自然排序: ['1.txt', '1啊.txt', '1比较.txt', '3_22.txt', '22_9.txt', 'AA.txt', 'a.txt', 'a1.txt', 'a啊.txt', 'b_8.txt', 'vdd.txt', 'ソラ.txt', 'プラネット.txt', '啊a.txt', '比.txt', '比较.txt', '比较1.txt', '比较3.txt', '比较5.txt', '比较6.txt', '比较a.txt', '比较c.txt']测试文件夹截图: 由结果可以印证,natsort 的 natsorted(files,alg=ns.PATH)方法可以实现自然排序,和windows的名称排序一致。 。 。 。 。 。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |