Вы можете отсортировать список и выполнить бинарный поиск, чтобы найти тот, который ближе всего к "неделе через неделю".
См. этот ответ о том, как сравнивать объекты даты и времени.
Также см. этот ответ о том, как преобразовать строку в дату и время.
Чтобы выполнить бинарный поиск, вы можете создать подобную функцию и использовать bisect
модуль:
import bisect
def find_next_week(dates, current_date):
return dates[bisect.bisect(dates, current_date + datetime.timedelta(weeks=1)) - 1]
который вы можете использовать следующим образом (1) :
>>> find_next_week(dates, datetime.datetime.strptime('2018-11-19 08:00:03', '%Y-%m-%d %H:%M:%S'))
datetime.datetime(2018, 11, 26, 4, 0, 7)
Чтобы преобразовать этот объект даты-времени в исходное имя файла,Вы можете сделать это:
>>> datetime.datetime(2018, 11, 26, 4, 0, 7).strftime('%Y-%m-%d %H:%M:%S')
'2018-11-26 04:00:07'
(1) Не забудьте отсортировать dates
перед передачей функции, потому что функция ожидает отсортированный список.