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()