[Python] ディレクトリ内のファイル登録/変更・更新/削除/移動を監視する – watchdog

 Pythonでファイルの操作を監視するならwatchdogというライブラリが便利です。

サンプルコード


まずはライブラリのインストール。

pip install watchdog

  ファイル追加・更新/変更・削除・移動を監視するサンプルコードです。それぞれの引数もコメントで解説してあります。

from watchdog.events import PatternMatchingEventHandler
from watchdog.observers import Observer


# Handlerにはファイル操作時の処理を実装
class FileChangeHandler(PatternMatchingEventHandler):
    def __init__(self):
        ignore_patterns = ["*.txt"]  # 無視するファイルパターン. 拡張子/ファイル名など指定.
        patterns = ["*.pdf"]  # 対象のファイルパターン. 拡張子/ファイル名など指定.
        # patterns = "*"  # 全ファイル対象とする場合はこれ
        ignore_directories = True  # ディレクトリも対象にするか
        case_sensitive = True  # 大文字小文字の区別
        super().__init__(patterns=patterns, ignore_patterns=ignore_patterns, ignore_directories=ignore_directories,
                         case_sensitive=case_sensitive)

    def on_created(self, event):
        print(f"ファイル追加: {event.src_path}")

    def on_modified(self, event):
        print(f"ファイル修正: {event.src_path}")

    def on_deleted(self, event):
        print(f"ファイル削除: {event.src_path}")

    def on_moved(self, event):
        print(f"ファイル移動: {event.src_path}")


dir_path = <フォルダパス>
recursive = True  # フォルダだった場合それ以下も探索する
# ObserverにHandlerを渡してstart
observer = Observer()
observer.schedule(FileChangeHandler(), dir_path, recursive)
observer.start()  # バックグラウンドで監視開始
observer.join()  # 監視完了待ち

参考ページ


コメントを残す

メールアドレスが公開されることはありません。