首页 > 解决方案 > 以数字顺序读取文件名,而不是使用 glob 进行 ASCI 排序?

问题描述

我有一个文件列表,命名如下:

file1.png
file2.png
...
file9.png
file10.png
file11.png
...
file99.png
file100.png
file101.png
...

当我使用此代码阅读目录时:

images = [file for file in glob.glob(image_dir + '*')]

我得到一个输出,它按如下方式对文件名进行排序:

[image_dir/file1.png
image_dir/file10.png
image_dir/file100.png
image_dir/file101.png
... 
image_dir/file109.png
image_dir/file11.png
image_dir/file110.png
...
image_dir/file119.png
image_dir/file12.png
image_dir/file120.png
...]

如何以正确的数字顺序获取文件?

标签: pythonsortingasciiglobnumeric

解决方案


尝试使用:

print(sorted(images, key=lambda x: int(x.split('file')[-1].split('.')[0])))

推荐阅读