ホームページ >バックエンド開発 >Python チュートリアル >ポーリングせずに特定のファイルの変更を効率的に監視するにはどうすればよいですか?

ポーリングせずに特定のファイルの変更を効率的に監視するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-16 02:34:10604ブラウズ

How Can I Efficiently Monitor Specific File Changes Without Polling?

ポーリングを行わずにファイルの変更を監視する

特定のログ ファイルへの変更をリアルタイムで追跡する必要がある場合は、次のことを避けることが重要です。ポーリング技術を使用します。より効率的なアプローチは、ファイル システムのイベント通知を利用することです。

win32file モジュールの使用

PyWin32 ライブラリの win32file.FindNextChangeNotification 関数を使用すると、ファイルの変更を監視できます。 。ただし、特定のファイルを監視する機能は直接提供されません。

Watchdog の紹介

別の解決策は、Watchdog ライブラリを使用することです。特定のファイルやディレクトリへの変更の監視など、ファイル システム イベントを監視するためのクロスプラットフォーム API を提供します。

ウォッチドッグを使用してファイルの変更を監視する方法は次のとおりです。

import watchdog.observers
import watchdog.events

class FileChangeHandler(watchdog.events.FileSystemEventHandler):
    def on_modified(self, path, filename):
        # Handle file changes here
        print(f"File modified: {filename}")

observer = watchdog.observers.Observer()
observer.schedule(FileChangeHandler(), path, recursive=False)
observer.start()
observer.join()

このスクリプトは、指定されたファイルへの変更を自動的に検出し、変更されたファイルで on_modified メソッドを呼び出します。 filename.

注: マップされたネットワーク ドライブで Watchdog を使用すると、Windows がネットワーク ボリューム上のファイル変更通知を処理する方法に制限があるため、機能しない可能性があります。

以上がポーリングせずに特定のファイルの変更を効率的に監視するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。