@PR1001

Как узнать, был ли изменен файл?

Здравствуйте, нужно узнать, был ли изменен файл(текстовый или тому подобный) c помощью python. Нужно получить именно последнее изменение(если можно, если нет то тогда просто изменение)

Как - то так(ну может и по другому):

import os
file = 'test.txt'
if os.path.change(file) == True:
print("Были изменения")
else:
print("Изменений не было")
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
@rPman
два направления:
* первый периодические опросы 'времени последнего изменения' с помощью os.path.getctime(path), если время изменилось - значит файл был изменен (речь о командах на запись но содержимое не проверяется).
Достоинства - простота, высокая скорость, если количество отслеживаемых файлов мало (до сотни).
Недостаток - низкая оперативность изменений, определяется интервалом опроса

* второй, подписаться на события изменений файла в файловой системе средствами ОС, они отличаются в каждой свои (например для linux гугли библиотеки python inotify). Можно вместо своей реализации использовать готовые утилиты (в linux inotify/inoticoming/incron/...)
Достоинства - высокая оперативность и скорость реакции на изменения, можно отслеживать изменения в огромном количестве файлов, очень подробная информация о действиях (например можно получить события о том что файл кем то был открыт и его читают)
Недостатки - сложность реализации, зависимость реализации от операционной системы.

p.s. Внимание, в зависимости от выбранного метода и операционной системы возможны неожиданные последствия попыток отслеживания файлов по символическим и жестким ссылкам (можно пропускать события изменений, вопрос не изучал но нужны тесты)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы