以升序对目录中的文件名排序
发布于 2021-01-29 18:58:43
我有一个包含jpg和其他文件的目录,所有jpg的文件名中都带有数字。有些文件名中可能包含其他字符串。
例如。
01.jpg
或者可能是
Picture 03.jpg
在Python中,我需要按升序排列所有jpg的列表。这是此代码段
import os
import numpy as np
myimages = [] #list of image filenames
dirFiles = os.listdir('.') #list of directory files
dirFiles.sort() #good initial sort but doesnt sort numerically very well
sorted(dirFiles) #sort numerically in ascending order
for files in dirFiles: #filter out all non jpgs
if '.jpg' in files:
myimages.append(files)
print len(myimages)
print myimages
我得到的是这个
['0.jpg', '1.jpg', '10.jpg', '11.jpg', '12.jpg', '13.jpg', '14.jpg',
'15.jpg', '16.jpg', '17.jpg', '18.jpg', '19.jpg', '2.jpg', '20.jpg',
'21.jpg', '22.jpg', '23.jpg', '24.jpg', '25.jpg', '26.jpg', '27.jpg',
'28.jpg', '29.jpg', '3.jpg', '30.jpg', '31.jpg', '32.jpg', '33.jpg',
'34.jpg', '35.jpg', '36.jpg', '37.jpg', '4.jpg', '5.jpg', '6.jpg',
'7.jpg', '8.jpg', '9.jpg']
显然,它首先盲目地排序最高有效数字。我试过使用,sorted()
因为您可以看到它希望能够解决该问题,但没有区别。
关注者
0
被浏览
99
1 个回答
-
假设每个文件名中只有一个数字:
>>> dirFiles = ['Picture 03.jpg', '02.jpg', '1.jpg'] >>> dirFiles.sort(key=lambda f: int(filter(str.isdigit, f))) >>> dirFiles ['1.jpg', '02.jpg', 'Picture 03.jpg']
这个版本也可以在Python 3中使用:
>>> dirFiles.sort(key=lambda f: int(re.sub('\D', '', f)))
推荐阅读
-
C ++中目录文件名的自然排序
2021-02-01 关注 0 浏览77 1答案
-
如何以升序排列文件名?
2021-01-30 关注 0 浏览64 1答案
-
只读visibles目录的文件名
2021-01-29 关注 0 浏览103 1答案
-
在Java中以升序对csv文件中的一列数据进行排序
2021-01-30 关注 0 浏览90 1答案
-
要求:在DOS窗口中查看D盘上所有以A开头的文件名及目录名:
2022-05-10 关注 0 浏览11 1答案
-
在Bash中的文件路径参数中获取最后一个目录名/文件名
2021-02-01 关注 0 浏览77 1答案
-
在 Bash 的文件路径参数中获取最后一个目录名/文件名
2022-05-26 关注 0 浏览21 1答案
-
目录中每个文件的Linux Shell脚本获取文件名并执行程序
2021-02-01 关注 0 浏览101 1答案
-
打开文件以unicode文件名?
2021-01-29 关注 0 浏览100 1答案
-
编写函数,获得目录下所有的文件名。
2021-10-21 关注 0 浏览135 1答案