プログラミングでファイルを扱う際、ファイルの変更を検知することは重要なタスクの一つです。特に、外部からのファイルの変更を検知して処理を行う場合には、ファイルの変更を自動的に検出することが必要です。
Pythonでは、標準ライブラリにwatchdogというモジュールがあり、ファイルの変更を自動的に検出することができます。以下は、watchdogを用いてファイルの変更を自動検出するサンプルコードです。
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class MyHandler(FileSystemEventHandler):
def on_modified(self, event):
if not event.is_directory:
print(f"File {event.src_path} was modified")
if __name__ == "__main__":
event_handler = MyHandler()
observer = Observer()
observer.schedule(event_handler, path=".", recursive=True)
observer.start()
try:
while True:
pass
except KeyboardInterrupt:
observer.stop()
observer.join()
上記のコードでは、MyHandlerというクラスを定義し、on_modifiedというメソッドをオーバーライドしています。on_modifiedメソッドは、ファイルが変更された際に呼び出されます。ここでは、変更されたファイルのパスを表示しています。
observerオブジェクトを作成し、scheduleメソッドで監視対象のディレクトリを指定します。startメソッドを呼び出すことで、監視を開始します。try-exceptブロックでプログラムが中断されるまで監視を続けます。
上記のコードを実行することで、カレントディレクトリ以下のファイルの変更を自動的に検出することができます。