Я сгенерировал много файлов изображений (PNG) в папке.У каждого есть имена, похожие на «img0.png», «img1.png», ..., «img123164971.png» и т. Д. Порядок этих изображений важен для меня, а числовая часть представляет порядок, в котором я должен их получить, прежде чемЯ добавляю их в html-форму.
Этот вопрос близко дает мне решение: Есть ли в Python встроенная функция для естественной сортировки строк?
Но я 'Я не совсем уверен, как включить его в мой конкретный код:
imagedata = list()
files_and_dirs = Path(imagefolder).glob('**/*')
images = [x for x in files_and_dirs if x.is_file() and x.suffix == '.png']
for image in images:
imagedata.append("<img src='{0}/{1}' width='200'>".format(imagefolder, image.name))
Эти файлы, естественно, читаются буквенно-цифровым способом, но это не то, что я хочу.У меня есть ощущение, что я могу просто сделать функцию images = sort_function (images), но я не уверен, как именно.Я понимаю, что могу сделать это:
imagedata = list()
files_and_dirs = Path(barcodeimagefolder).glob('**/*')
images = [x.name for x in files_and_dirs if x.is_file() and x.suffix == '.png']
images = natural_sort(images)
for image in images:
imagedata.append("<img src='{0}/{1}' width='200'>".format(imagefolder, image))
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)
Используя решение Марка Байерса в ссылке.Но позже мне понадобится список самих реальных изображений, и кажется избыточным иметь два списка, когда один из них содержит все данные в другом.Вместо этого я бы очень хотел отсортировать список файлов изображений по их имени, таким образом.Или еще лучше, прочитайте их из папки в таком порядке, если это возможно.Любой совет?
Редактировать: я изменил название, сделав его немного более сжатым и, надеюсь, все еще точным.