如何按目录文件名中的数字对文件进行排序? [英] How to sort files by number in filename of a directory?

查看:72
本文介绍了如何按目录文件名中的数字对文件进行排序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个目录,其中包含许多按特定顺序命名的文本文件:

I have a directory containing a lot of textfiles named in a specific order:

0.txt
1.txt
2.txt
....
100.txt
101.txt
.....
40000.txt

当我试图检索我正在使用的所有文件的排序列表时:

When im trying to retrieve a sorted list of all the files im using:

for file in sorted(os.listdir(filepath)):
            print(file)

我得到的结果是:

0.txt
1.txt
10.txt
100.txt
1000.txt
10000.txt
10001.txt
10002.txt
10003.txt
10004.txt
.....

这不是我想要的,我想要它按正常的升序排列:

Which is not how i want it, i want it in normal ascending order:

0.txt
1.txt
2.txt
3.txt
4.txt
...

有人知道怎么做吗?

推荐答案

可以使用 lambda 表达式

Could use a lambda expression

import os

filelist = os.listdir(path)
filelist = sorted(filelist,key=lambda x: int(os.path.splitext(x)[0]))

for file in filelist:
    print(file)

输出为:

1.txt
2.txt
3.txt
4.txt
5.txt
6.txt
7.txt
8.txt
9.txt
10.txt

这篇关于如何按目录文件名中的数字对文件进行排序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆