Python WatchDog - フォルダの監視を行う

特定のフォルダにファイルを置くと自動的になにか処理を行うと便利です。

例えば、ファイルを置くとそれを自動で印刷したり、メールをしたりする場合などです。

今回はWatchDogというライブラリを使って、フォルダを監視する方法をご紹介します。


手順1 ライブラリのインストール

まずは次のコマンドを実行して、WatchDogライブラリをインストールします。

1
pip install watchdog

手順2 コーディング

次の通りコーディングを行います。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer
import time

class ChangeHandler(FileSystemEventHandler):
# すべてのイベント
def on_any_event(self, event):
print('[全て]',event)

# 作成された時のイベント
def on_created(self, event):
print('[作成]',event)

# 変更されたときのイベント
def on_modified(self, event):
print('[変更]', event)

# 削除された時のイベント
def on_deleted(self, event):
print('[削除]',event)

# 移動した時のイベント
def on_moved(self, event):
print('[移動]',event)

observer = Observer()
# 監視するフォルダを第2引数に指定
observer.schedule(ChangeHandler(), './work', recursive=True)
# 監視を開始する
observer.start()

while True:
time.sleep(5)

WatchDogでは5種類のイベントを監視できます。
メソッド内容
on_any_event全てのイベントを監視
on_created作成イベントを監視
on_deleted削除イベントを監視
on_modified変更イベントを監視
on_moved移動イベントを監視

手順3 実行結果を確認

監視フォルダにファイルを作ったり、削除したり、編集したりすると次のようにイベントを検知することができます。

(例) 実行結果


Windowsでは、ファイルを編集するとイベントが2回連続で発生するようなので注意が必要です。