Как в цикле 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 шт):
Определитесь с тем, что такое "новый" (переменная с датой-критерием).
Используйте для получения даты создания файла:
import os.path, time date_of_creation = os.path.getctime(MY_PATH_GIT+i)Сравните дату с этим критерием.
И для полноты картины (дата последнего изменения):
date_of_change=os.path.getmtime(MY_PATH_GIT+i)
Можно воспользоваться модулем 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 — временная метка изменения.