Если я правильно понимаю, у вас есть:
lst_files = glob.glob(fp_in)
>>> ['/outpng/img28.png', '/outpng/img4.png', '/outpng/img20.png', '/outpng/img32.png', '/outpng/img36.png', '/outpng/img11.png', '/outpng/img1.png', '/outpng/img9.png', '/outpng/img24.png', '/outpng/img35.png', '/outpng/img7.png', '/outpng/img12.png',]
И вы хотите, чтобы файлы были «в порядке» (предположительно, номер - это порядок изображений). Вы можете сделать это, используя:
import re
def get_number(file_name):
m = re.findall('img([0-9]*)\.', file_name)[0]
return int(m)
lst_files = ['/outpng/img28.png', '/outpng/img4.png', '/outpng/img20.png', '/outpng/img32.png', '/outpng/img36.png', '/outpng/img11.png', '/outpng/img1.png', '/outpng/img9.png', '/outpng/img24.png', '/outpng/img35.png', '/outpng/img7.png', '/outpng/img12.png']
lst_numbers = [get_number(i) for i in lst_files]
lst_number_files = sorted(list(zip(lst_numbers, lst_files)))
lst_files_sorted = [i[1] for i in lst_number_files]
Как это работает:
- вы найдете число в строке (используя
re.findall
), которое соответствует 'imgX.' где X - ваш номер - , вы сопоставляете числа с именами файлов
- , вы сортируете файлы по номеру
- , вы сглаживаете список, содержащий только имена файлов
Теперь вы можете использовать этот список, чтобы сделать свой GIF:
img, *imgs = [Image.open(f) for f in lst_files_sorted]