Python

Pythonでフォルダ監視 watchdog 001

Pythonでフォルダ監視 新規作成ファイルの取得

ライブラリのインストール

pip install watchdog

イベントクラスの作成

まず、フォルダ監視のイベントを定義するクラスを作成します。今回はファイルが作成された時のイベントを記載します。
クラス名は特に決まりはありませんので、なんでも構いません。が、引数に”FileSystemEventHandler”が必要です。
次にメソッドですが新規作成の場合は”on_created”で引数にselfとイベントを受け取る引数を設定します。

実際に動かしてみる

main処理はまず、イベントクラス、Observerクラスを初期化します。※このObserverがpythonの監視オブジェクトです。
observer.schedule(”イベントハンドラーインスタンス”、”監視ディレクトリ”、recursive=True)で監視設定を行います。
observer.start()で監視の実行ができます。

正直、time.sleep(0.1)に意味はありません。trycatchのエラー取得のための対の処理として無限ループを仕方なく処理に組み込んでいます。

実際のコード

※watch_dirだけ任意のパスに変更してください。

import time
import os

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


watch_dir = "監視フォルダパス"


class ChangeHandler(FileSystemEventHandler):
    #001
    def on_created(self, event):
        filepath = event.src_path
        filename = os.path.basename(filepath)
        print('%sが新規で作成!' % filename)



if __name__ in '__main__':
    while 1:
        event_handler = ChangeHandler()
        observer = Observer()
        observer.schedule(event_handler, watch_dir, recursive=True)
        observer.start()
        try:
            while True:
                time.sleep(0.1)
        except KeyboardInterrupt:
            observer.stop()
        observer.join()