listdir顺序问题

目录内有文件:1.txt, 2.txt, 10.txt, 100.txt

os.listdir(path) 后,遍历返回的是 1.txt, 10.txt, 100.txt, 2.txt。是按照第一个字符大小排序的。
 
file_list.sort(key= lambda x:int(x[:-4])) 后,遍历返回的是 1.txt, 2.txt, 10.txt, 100.txt。是按照数字来排序的。
表示把file_list的元素定义为x(即文件名,如10.txt),传给lambda作参数,在匿名函数lambda中,参数x切片去掉后4位(即只留文件名不要后缀,如10),并且转换为int整数类型,作为结果返回给key,也就是sort排序的关键字。
大概是这个意思,注意是要把文件名转为int,是按数字排序的,如果不转,还是按照文本的话,那还是最初的样子。
 
如果是中文文件名,listdir也是会按照第一个字符大小排序,不过不是像windows里的拼音字母,而是按照utf8的值。如:

倪 b'\xe5\x80\xaa'
唯 b'\xe5\x94\xaf'
孟 b'\xe5\xad\x9f'
居 b'\xe5\xb1\x85'
成 b'\xe6\x88\x90'
杨 b'\xe6\x9d\xa8'
清 b'\xe6\xb8\x85'
湖 b'\xe6\xb9\x96'
王 b'\xe7\x8e\x8b'
白 b'\xe7\x99\xbd'
美 b'\xe7\xbe\x8e'
逆 b'\xe9\x80\x86'
长 b'\xe9\x95\xbf'
陈 b'\xe9\x99\x88'
高 b'\xe9\xab\x98'
黑 b'\xe9\xbb\x91'

 
posted @   sbsdnyn  阅读(270)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示