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