pythonでフォルダを監視しファイルが存在する場合メソッドを実行する。

python コンピュータ
python
画像を拡大するpythonスクリプトを使っているのですが、コマンドを入力するのが面倒なので、元画像を保存するフォルダを数秒ごとに監視し、ファイルがある場合処理を実行し終了したらファイルを消すスクリプトを書いてみました。
#!/usr/bin/env python3
# coding: utf8
#
# 一定間隔でフォルダを監視しファイルが存在する場合メソッドを実行する。
#
import time
import sys
import os
interval = 60
target_dir = "h:\\tmp"
# フォルダ内のファイルを走査するメソッド
def func():
    # 拡大処理など
    print("func exec")
# ファイル数を取得
def filecount(dir):
    count = 0
    for name in os.listdir(dir):
        filename = os.path.join(dir, name)
        if os.path.isfile(filename):
            count += 1
    return count
# ファイルを削除
def fileremove(dir):
    for name in os.listdir(dir):
        filename = os.path.join(dir, name)
        if os.path.isfile(filename):
            print("remove:{0}".format(filename))
            os.remove(filename)
try:
    while (True):
        if filecount(target_dir) > 0:
            func()
            fileremove(target_dir)
        time.sleep(interval)
except KeyboardInterrupt as e:
    print("Ctrl+C Exit")
    sys.exit
Windowsのデスクトップ環境でPowerShellなどのコンソールから実行することを想定しています。フォルダ監視するため基本ずっと実行することに成ります。終了はキーボードからCtrl+Cを押してください。
スクリプトを作成してみましたが、pythonにはWatchdogというライブラリがありますので、実用的にはそちらの利用をお勧めします。googleなどで”python watchdog”で検索してみてください。

コメント