メインコンテンツまでスキップ

Pythonでファイルの変更を監視する方法

Pythonでファイルの変更を監視する方法

以下は、watchdog ライブラリを使用してPythonでファイルの変更を監視する手順のチュートリアルです。

ステップ1: watchdog ライブラリのインストール

始める前に、watchdog ライブラリがインストールされていることを確認してください。次のコマンドを実行して、pip を使用してインストールできます。

pip install watchdog

ステップ2: 必要なモジュールのインポート

始めるために、watchdog ライブラリから必要なモジュールと他の必要なライブラリをインポートします。

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

ステップ3: カスタムイベントハンドラの作成

次に、FileSystemEventHandler を継承するカスタムイベントハンドラクラスを作成します。このクラスでは、ファイルの作成、変更、削除などの特定のイベントが発生した場合の動作を定義します。

class MyHandler(FileSystemEventHandler):
def on_any_event(self, event):
# このメソッドは、ファイルの変更イベントが発生するたびに呼び出されます
if event.is_directory:
return
if event.event_type == 'created':
print(f"ファイルが作成されました: {event.src_path}")
elif event.event_type == 'modified':
print(f"ファイルが変更されました: {event.src_path}")
elif event.event_type == 'deleted':
print(f"ファイルが削除されました: {event.src_path}")

上記の例では、ファイルの作成、変更、削除の3つのイベントの動作を定義しています。特定の要件に基づいてこのロジックをカスタマイズすることができます。

ステップ4: Observerの作成と監視の開始

次に、Observer クラスのインスタンスを作成し、イベントハンドラをアタッチします。そして、監視したいディレクトリやファイルを指定します。

if __name__ == "__main__":
event_handler = MyHandler()
observer = Observer()
path = '/path/to/directory' # 監視したいディレクトリやファイルのパスに置き換えてください
observer.schedule(event_handler, path, recursive=True)
observer.start()

'/path/to/directory' を監視したいディレクトリやファイルの実際のパスに置き換えてください。recursive=True を設定すると、すべてのサブディレクトリも監視されます。

ステップ5: プログラムを実行し続ける

ファイルの変更を監視し続けるために、無限ループを追加してプログラムを実行し続けます。

    try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()

このループにより、プログラムがすぐに終了せず、ファイルの変更を監視し続けることができます。プログラムを停止するには、Ctrl + C を押します。

ステップ6: コードを実行する

Pythonスクリプトを保存し、Pythonインタプリタを使用して実行します。指定したディレクトリやファイルが変更されるたびに、対応するメッセージがコンソールに表示されるはずです。

以上で、watchdog ライブラリを使用してPythonでファイルの変更を監視する方法を実装しました。特定の要件に基づいてイベントハンドラのロジックをカスタマイズしてください。