環境
- macOS Sierra 10.12.5
- python 3.4
今回使用するのは「watchdogモジュール」です。
Windowsの方はコマンドプロンプト、Macの方はターミナルを起動し、次のコマンドを実行してください。
>> pip install watchdog
pipが使用できない場合は以下よりソースファイルを取得し、中のsetup.pyを実行してください。
https://pypi.python.org/pypi/watchdog
モジュールの用意が整っている前提で進めます。
スクリプト
# -*- coding: utf-8 -*-
from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer
import os
import time
target_dir = "監視したいフォルダのパス"
class ChangeHandler(FileSystemEventHandler):
def on_created(self, event):
filepath = event.src_path
filename = os.path.basename(filepath)
print('%sができました' % filename)
def on_modified(self, event):
filepath = event.src_path
filename = os.path.basename(filepath)
print('%sを変更しました' % filename)
def on_deleted(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, target_dir, recursive=True)
observer.start()
try:
while True:
time.sleep(0.1)
except KeyboardInterrupt:
observer.stop()
observer.join()
実行結果
こんな感じ。
解 説
細かい部分は省略するとして、重要なのはChangeHandlerクラス内の各メソッドです。
それぞれのメソッドはそれぞれ次のタイミングで発動します。
- on_created :ファイルやフォルダが 作られた時
- on_modified :ファイルやフォルダが 変更された時
- on_deleted :ファイルやフォルダが 削除された時
「event.src_path」で対象ファイル/フォルダのフルパスが取得できます。
今回は使用していませんが「event.is_directory」で対象がフォルダかどうかを判定するこおもできます。
watchdogモジュールの正式リファレンスは下記ページをご覧ください。
http://pythonhosted.org/watchdog/
まとめ
Windowsのタスクトレイに常駐するようなアプリであれば、今回のフォルダ監視機能と組み合わせると非常に便利なものができます。
例えば、「特定のフォルダ内にJPEGファイルが発生した際、自動的に指定するフォルダへ移動する」といったことも可能です。
使い方は無限大だと思いますので、ぜひ覚えていってください!
0 件のコメント:
コメントを投稿