Как посмотреть файл на предмет изменений? - PullRequest
291 голосов
/ 08 октября 2008

У меня есть файл журнала, записываемый другим процессом, который я хочу наблюдать за изменениями. Каждый раз, когда происходит изменение, я хотел бы прочитать новые данные, чтобы выполнить некоторую обработку.

Какой лучший способ сделать это? Я надеялся, что из библиотеки PyWin32 будет какая-то зацепка. Я обнаружил функцию win32file.FindNextChangeNotification, но не знаю, как попросить ее посмотреть определенный файл.

Если бы кто-нибудь сделал что-то подобное, я был бы очень рад услышать, как ...

[Редактировать] Я должен был упомянуть, что мне нужно решение, которое не требует опроса.

[Редактировать] Проклятия! Кажется, это не работает на подключенном сетевом диске. Я предполагаю, что Windows не «слышит» никаких обновлений файла, как это происходит на локальном диске.

Ответы [ 22 ]

0 голосов
/ 11 марта 2019

Похоже, что никто не опубликовал fswatch . Это кроссплатформенный наблюдатель файловой системы. Просто установите его, запустите и следуйте инструкциям.

Я использовал его с программами на python и golang, и он просто работает.

0 голосов
/ 08 октября 2008

Я не знаю какой-либо конкретной функции Windows. Вы можете попробовать получить хэш MD5 файла каждую секунду / минуту / час (зависит от того, насколько быстро он вам нужен) и сравнить его с последним хешем. Если он отличается, вы знаете, что файл был изменен, и вы читаете самые новые строки.

...