問題:
監視したい別のプロセスによって書き込まれたログ ファイルがあります。変化のために。変更が発生するたびに、処理のために新しいデータを読み取る必要があります。
背景:
PyWin32 ライブラリの win32file.FindNextChangeNotification 関数の使用を検討していましたが、その方法がわかりません。特定のファイルを監視するように設定します。
解決策: 導入Watchdog
ポーリングの代わりに、より効率的なオプションは Watchdog ライブラリを使用することです。方法は次のとおりです:
import watchdog.observers import watchdog.events class MyEventHandler(watchdog.events.FileSystemEventHandler): def on_modified(self, path, metadata): # Read the modified log file and perform necessary processing # Create a Watchdog observer observer = watchdog.observers.Observer() # Add the log file path to be watched observer.schedule(MyEventHandler(), "path/to/log_file") # Start observing observer.start() # Wait indefinitely for changes observer.join()
注:
マップされたネットワーク ドライブ上でファイルを監視している場合、Windows は、ネットワーク ドライブ上で行う場合とは異なり、ファイルの更新を「認識」しない可能性があります。ローカルディスク。このようなシナリオでは、別のアプローチを使用することを検討してください。
以上がPython でポーリングせずにファイルの変更を効率的に監視するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。