Skip to main content
 首页 » 编程设计

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

2025年05月04日20xxx_UU

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

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']