[英]Sorting list by filename
我讀入了一些像這樣存儲的圖像的文件名:
(path/to/images/1_1.png)
(path/to/images/1_2.png) ...
(path/to/images/10_1.png) ...
(path/to/images/1000_1.png)
使用此代碼將文件名讀取到列表時
import cv2
import glob
folders = glob.glob(r'C:\Users\tobis\OneDrive\Desktop\Masterarbeit\data\2017-IWT4S-CarsReId_LP-dataset\*')
imagenames_list = []
for folder in folders:
for f in glob.glob(folder+'/*.png'):
imagenames_list.append(f)
我列表中的第一張圖片是文件名為(path/to/images/1000_1.png)
而不是(path/to/images/1_1.png)
的圖片。 以正確的順序獲取文件很重要,因為我需要將圖像與另一個列表匹配。 有沒有辦法按照我需要的方式對列表進行排序?
您所指的是自然排序,而不是默認的字典排序。
這是一個我認為可以滿足您需求的示例。
import re
def natural_sort(l):
convert = lambda text: int(text) if text.isdigit() else text.lower()
alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ]
return sorted(l, key = alphanum_key)
fl = ['path/to/images/1000_1.png', 'path/to/images/1_1.png']
print(natural_sort(fl))
好問題!
請參閱此工作示例:
sorted(['path/to/images/1000_1.png',
'path/to/images/1_1.png',
'path/to/images/1_2.png',
'path/to/images/10_1.png'
],
key=lambda x: int(x.split('/')[-1][:-4].replace('_','')))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.