使用os.listdir进行列表排序-依次添加文件

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

我有一个fits文件文件夹,所有文件均标记为img_1.fits,img_32.fits,img_2.fits ...等,我想按数字顺序对其进行迭代并将数据附加到数组中,但是我似乎无法对它们进行排序。我已经尝试过;

def load_images_sorted(folder):
images = []
for filename in os.listdir(folder):
    file = sorted(os.path.join(folder, filename), key=lambda x: int(os.path.splitext(x.split('_')[1])[0]))
    image_data = fits.getdata(file, ext=0,)
    images.append(image_data)
return np.array(images) 

我该怎么做才能用OS对它们进行排序?还是glob会更有用?

python operating-system sortedlist
1个回答
0
投票
import re 

def sorted_alphanumeric(data):
    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(data, key=alphanum_key)

def load_images_sorted(folder):
    images = []
    for filename in sorted_alphanumeric(os.listdir(folder)):
        # do whatever with these sorted files
        ...
© www.soinside.com 2019 - 2024. All rights reserved.