У меня есть файл журнала, записываемый другим процессом, который я хочу просмотреть на предмет изменений. Каждый раз, когда происходит изменение, я хотел бы прочитать новые данные, чтобы выполнить некоторую обработку.
Какой лучший способ сделать это? Я надеялся, что будет какой-нибудь хук из библиотеки PyWin32. Я нашел win32file.FindNextChangeNotification функцию, но понятия не имею, как попросить ее просмотреть определенный файл.
Если кто-нибудь делал что-либо подобное, я был бы очень признателен услышать, как это делается...
[Редактировать] Мне следовало упомянуть, что я искал решение, которое не требует опроса.
[Редактировать] Проклятия! Похоже, это не работает на подключенном сетевом диске. Я предполагаю, что Windows не "слышит" никаких обновлений файла так, как это происходит на локальном диске.
defook(self): stamp = os.stat(self.filename).st_mtime if stamp != self._cached_stamp: self._cached_stamp = stamp # File has changed, so do something...
Ответ 3
Если вам нужно мультиплатформенное решение, тогда проверьте QFileSystemWatcher. Вот пример кода (не очищенный):
Это не должно работать в Windows (возможно, с cygwin ?), Но для пользователя unix вам следует использовать системный вызов "fcntl". Вот пример на Python. В основном это тот же код, если вам нужно написать его на C (те же имена функций)