首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据Python中文件名的数值对文件进行排序

根据Python中文件名的数值对文件进行排序
EN

Stack Overflow用户
提问于 2018-11-09 15:09:59
回答 1查看 251关注 0票数 1

我正在生成一个目录中的文件列表,我希望根据文件名中的数值对它们进行排序。

文件:

代码语言:javascript
运行
复制
0.png
1.png
2.png
...
11.png
12.png

诸若此类

如果我使用os.listdir()生成列表,然后调用列表上的.sort()方法,如下所示:

代码语言:javascript
运行
复制
['0.png', '1.png', '10.png', '11.png', '12.png', '13.png', '14.png', '15.png', '16.png', '17.png', '18.png', '19.png', '2.png', '20.png', '21.png', '22.png', '23.png', '24.png', '25.png', '26.png', '3.png', '4.png', '5.png', '6.png', '7.png', '8.png', '9.png']

如何根据名称的数值对其进行排序?

在Windows操作系统上,如果我在Details视图中按列名进行排序,则按我希望的方式对其进行排序。这也可以用Python来完成吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-09 15:11:19

您可以使用内置的sorted函数并提供一个key

key下面是一个函数,它将文件名的第一部分(在'.'之前)转换为整数。排序顺序使用这些函数调用的结果,但实际上对原始对象进行排序。

代码语言:javascript
运行
复制
l = ['0.png', '1.png', '10.png', '11.png', '12.png', '13.png', '14.png', '15.png', '16.png', '17.png', '18.png', '19.png', '2.png', '20.png', '21.png', '22.png', '23.png', '24.png', '25.png', '26.png', '3.png', '4.png', '5.png', '6.png', '7.png', '8.png', '9.png']

sorted(l, key=lambda fname: int(fname.split('.')[0]))

返回

代码语言:javascript
运行
复制
['0.png', '1.png', '2.png', ..., '26.png']
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53228332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档