Как в цикле python узнать что файл новый

Существует цикл в python:

 for i in file:
            if os.path.exists(MY_PATH_GIT+i):
                #copy for anasys on linux
                os.system(f'cp "{MY_PATH_GIT+i}" {place+"/"}')
                #On this step we sort deleted\not deleted file for deploy and pmd analys
                file_true.append(MY_PATH_GIT + i)
            else:
                print('\n========= deleted ' + MY_PATH_GIT + i + ' =========\n')  # checking the bot

Он проверяет что файл существует, чтобы добавить его в список который далее будет подставлен в строчку для валидации, но существует тип файлов, который к валидации допускается только если он новый, как я могу добыть такую инофрмацию?


Ответы (2 шт):

Автор решения: Сергей
  1. Определитесь с тем, что такое "новый" (переменная с датой-критерием).

  2. Используйте для получения даты создания файла:

     import os.path, time
     date_of_creation = os.path.getctime(MY_PATH_GIT+i)
    
  3. Сравните дату с этим критерием.

И для полноты картины (дата последнего изменения):

    date_of_change=os.path.getmtime(MY_PATH_GIT+i)
→ Ссылка
Автор решения: Andy Pavlov

Можно воспользоваться модулем Path().stat() из pathlib, чтобы получить временную метку, которую потом можно при желании преобразовать в читаемый формат через datetime:

from datetime import datetime, timezone
import pathlib

filename = 'example.txt'
file = pathlib.Path(filename)

datetime_creation = datetime.fromtimestamp(file.stat().st_ctime, tz=timezone.utc)
datetime_modify = datetime.fromtimestamp(file.stat().st_mtime, tz=timezone.utc)
print(f'Создан {datetime_creation}, Изменен {datetime_modify}')

Вывод:

Создан 2022-04-06 20:09:20.259353+00:00, Изменен 2022-04-06 20:09:20.260349+00:00

file.stat().st_ctime в данном случае временная метка создания, file.stat().st_mtime — временная метка изменения.

→ Ссылка