繁体   English   中英

如何获得带数字的有序文件列表?

[英]How to have an ordered list of files with digits?

我有一个文件文件夹,想一个一个地读取文件,因为它是视频的帧。

但是,当我试图获得一个有序的文件列表时,它的顺序如下:

data_dir = './data/'
filenames =listdir(data_dir)
N=len(filenames)
filenames.sort()
filenames 


['Image1.jpg',
 'Image10.jpg',
 'Image11.jpg',
 'Image12.jpg',
 'Image13.jpg',
 'Image14.jpg',
 'Image15.jpg',
 'Image2.jpg',
 'Image3.jpg',
 'Image4.jpg',
 'Image5.jpg',
 'Image6.jpg',
 'Image7.jpg',
 'Image8.jpg',
 'Image9.jpg']

如何根据数字获得有序的图像列表?

使用正则表达式提取数字部分并使用自定义排序进行相应排序,您也可以使用正则表达式,如r"Image(\d+).jpg"来精确。

import re
data_dir = './data/'
filenames =listdir(data_dir)
N=len(filenames)
filenames.sort(key=lambda filename : int(''.join(re.findall("\d+",filename))))
filenames

key使用sorted后的 function 和lambda (假设所有文件名都包含“IMG”):

sorted_filenames = sorted(filenames, key= lambda x: int(x.split("IMG")[1].split(".")[0]))

结果:

['IMG1.bmp',
 'IMG2.bmp',
 'IMG3.bmp',
 'IMG4.bmp',
 'IMG5.bmp',
 'IMG6.bmp',
 'IMG7.bmp',
 'IMG8.bmp',
 'IMG9.bmp',
 'IMG10.bmp',
 'IMG11.bmp',
 'IMG12.bmp',
 'IMG13.bmp',
 'IMG14.bmp',
 'IMG15.bmp']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM