以数字顺序读取文件名,而不是使用glob进行ASCI排序?

问题描述 投票:0回答:1

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

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

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

python sorting ascii glob numeric
1个回答
2
投票

尝试使用:

print(sorted(images, key=lambda x: int(x.split('file')[-1].split('.')[0])))
© www.soinside.com 2019 - 2024. All rights reserved.