Python

Pythonでフォルダ監視 タイムスタンプの取得 watchdog 006

Pythonでフォルダ監視 タイムスタンプの取得 watchdog

前回からの変更点

監視フォルダ内に新規でファイルが作成された時にタイムスタンプを取得

ライブラリの追加

import datetime

タイムスタンプを取得すること自体には上記ライブラリは必要ありませんが、実際に取得したタイムスタンプを日付型に変換するために必要です。

タイムスタンプの取得方法

os.stat(”対象ファイルのパス”).st_mtime

ソースコード
import time
import os
#import fnmatch #追加
import datetime #追加

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


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


class ChangeHandler(FileSystemEventHandler):
    #001
    #005
    #006
    def on_created(self, event):
        filepath = event.src_path
        filename = os.path.basename(filepath)
        timestamp = os.stat(filepath).st_mtime  #タイムスタンプの取得
        date =  datetime.datetime.fromtimestamp(timestamp) #日付型に変換


        #if fnmatch.fnmatch(filename, '*.csv'):
        print('%sが新規で作成!' % filename)
        print(date)
    
    #002
    def on_modified(self, event):
        filepath = event.src_path
        filename = os.path.basename(filepath)
        print('%sが修正されたよ!' % filename)
    
    #003
    def on_deleted(self, event):
        filepath = event.src_path
        filename = os.path.basename(filepath)
        print('%sが削除されたよ!' % filename)
    
    #004
    def on_moved(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()