Обнаружение изменения файла без опроса [дубликат]
этот вопрос уже есть ответ здесь:
- Как просмотреть файл на предмет изменений? 20 ответов
Я пытаюсь использовать метод в программе Python, чтобы определить, был ли изменен файл в файловой системе. Я знаю, что я мог бы что-то запустить каждые 5 секунд, чтобы проверить дату последней модификации системы, но мне было любопытно, есть ли более простой способ сделать это, не требуя, чтобы моя программа проверяла повторно.
кто-нибудь знает о таком методе?
4 ответа:
для linux, есть pyinotify.
на главной странице:
Pyinotify-это модуль Python для мониторинг изменений файловых систем. Pyinotify опирается на ядро Linux функция (объединена в ядре 2.6.13) позвонил через inotify. inotify-это управляемый событиями уведомитель, его уведомления экспортируются из ядра пространство для пользователя пространство через три системный вызов. pyinotify связывает эти системные вызовы и предоставляет выполнение на верхней части им предлагают общий и абстрактный способ управлять этими функциями.
таким образом, он явно не кросс-платформенный и опирается на новую достаточно версию ядра. Однако, насколько я вижу, требование поддержки ядра было бы верным для любого механизма без опроса.
отличная кроссплатформенная библиотека для просмотра каталогов.
с сайта
Поддерживаемые Платформы
Linux 2.6 (inotify)
Mac OS X (FSEvents, kqueue)
FreeBSD/BSD (kqueue)
Windows (ReadDirectoryChangesW с портами завершения ввода-вывода; ReadDirectoryChangesW рабочие потоки)
OS-independent (опрос диска для моментальных снимков каталога и их периодическое сравнение; медленно и не рекомендуется)
Я использовал его на пару проектов, и это, кажется, работает замечательно.
на windows есть:
наблюдатель, который является хорошим питона порта .Чистый API-интерфейс класса filesystemwatcher.
также есть (тот, который я написал) dirwatch.
оба полагаются на windows ReadDirectoryChangesW
вы также должны увидеть inotifyx который очень похож на ранее упомянутый pyinotify, но, как говорят, имеет API, который меняется меньше.