簡體   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