python - 与其他字符混合时按数字顺序对文件名进行排序

标签 python

我有以下代码部分,我打算通过它以正确的顺序打印文件名:

for root, dirs, files in os.walk(path):
    sortedFiles = sorted(files)
    for file in sortedFiles[0:]:
        print file

这是我得到的:

1.i.jpg
10.i.jpg
102.i.jpg
103.i.jpg
104.i.jpg
105.i.jpg
106.i.jpg
107.i.jpg
108.i.jpg
109.i.jpg
11.i.jpg
...
...
...

如何让 2.i.jpg 出现在 1.i.jpg 之后等等?也就是说,数值的顺序正确吗?

谢谢。

最佳答案

您可以使用进行排序:

files = ['1.i.jpg',
'10.i.jpg',
'102.i.jpg',
'103.i.jpg',
'104.i.jpg',
'105.i.jpg',
'106.i.jpg',
'107.i.jpg',
'108.i.jpg',
'109.i.jpg',
'11.i.jpg',
'2.i.jpg']

sorted(files, key=lambda x:int(x.split('.')[0]))
['1.i.jpg',
 '2.i.jpg',
 '10.i.jpg',
 '11.i.jpg',
 '102.i.jpg',
 '103.i.jpg',
 '104.i.jpg',
 '105.i.jpg',
 '106.i.jpg',
 '107.i.jpg',
 '108.i.jpg',
 '109.i.jpg']

关于python - 与其他字符混合时按数字顺序对文件名进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54681640/

相关文章:

python - 如何使用 pandas 比较数据框中的两个日期列?

python - 集合上最小、最大的时间复杂度

Python字典: Compare keys with Values of All Keys

python - Pandas 数据框 : Remove secondary upcoming same value

python - 如何退出非尾递归而不计算额外结果?

python - Django 信号卡在循环中

python - 如何获取QGraphicsItem坐标系中的光标点击位置?

python - HTML 和 Flask 新手。如何让用户无需登录即可提交图像和描述?

通过 RabbitMQ 进行 Java/Python 通信

python - 读取 CSV 文件时出现 UnicodeDecodeError