@JRBRO

Как написать следующую логику на питоне?

Всем привет. Есть скрипт, качающий актуальную картинку с камеры. Есть папка, которая хранит в себе референсы.

Как может выглядеть логика, чтобы он доставал путь к актуальному скрину.
Выглядит все так:
1. Папка референс, где идут номера камер, 1, 2, 3, 4, 5.
2. Папка с актуальным, Camera_4.11.2022_10.52 (Имя папки с переменными Датой и временем), внутри скриншоты с такими же именами как референсы, 1, 2, 3, 4, 5.

Задача- сравнивать референс с самыми новыми скринами.

Пока что путь пишеться в ручную
before = cv2.imread('ref/1.jpg')
after = cv2.imread('Camera_4.11.2022_10.52/1.jpg')
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Как всегда, разбить задачу на меньшие.
1. Получить список имён папок. См. модули pathlib или os.path, а также функции glob.glob() или os.walk().
2. Разбить имя папки на компоненты - дату и время. str.split() в помощь.
3. Разбить компоненты на отдельные части - месяц, день, год, час, минуту. То же самое, str.split()
4. Преобразовать каждый компонент в целое число, расположить их в одном кортеже в порядке убывания: (год, месяц, день, час, минута). Такие кортежи можно сравнивать напрямую, т.е. (1, 2, 3, 4, 5) будет больше чем (1, 2, 3, 4, 4).
5. Шаги 2-4 заворачиваешь в функцию, которая и возвращает полученный кортеж.
6. Пропускаешь список папок из п. 1 через функцию max() с параметром key. В key передашь твою функцию из шага 5, это будет критерий сравнения элементов списка. Функция вернёт тебе "наибольший" элемент, а с учётом критерия из п. 4 это будет имя папки с наиболее поздними датой и временем.
7. PROFIT
Код набросай сам. Как использовать упомянутые функции, читай в официальной документации.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы