watchdog应用实例
生活随笔
收集整理的這篇文章主要介紹了
watchdog应用实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
watchdog應用實例
By 鬼貓貓 20130504 http://www.cnblogs.com/muyr/
實例:監測某文件夾,一旦文件夾里有文件,就把它剪切到其他服務器
import sys import os, shutil import time import logging from watchdog.observers import Observer from watchdog.events import (LoggingEventHandler, FileSystemEventHandler)backupDir = 'D:/Work/backup' baseDir = 'S:/Test/Upload'def copyFile(fromFile, toDir):if os.path.isdir(fromFile):clearDir = fromFile[len(baseDir):]try:os.makedirs(toDir + clearDir)print 'NewFolder: ', fromFile.encode('utf-8'), ' ===> ', (toDir + fromFile[len(baseDir):]).encode('utf-8')except:print 'NewFolder-PASS:', fromFile.encode('utf-8')returnelse:clearDir = os.path.dirname(fromFile)[len(baseDir):]if not os.path.isdir(toDir + clearDir):os.makedirs(toDir + clearDir)try:time.sleep(0.2)shutil.move(fromFile, toDir + fromFile[len(baseDir):])print 'MoveFile: ', fromFile.encode('utf-8'), ' ===> ', (toDir + fromFile[len(baseDir):]).encode('utf-8')except:print 'MoveFile-PASS:', fromFile.encode('utf-8')returnreturnclass TestEventHandler(FileSystemEventHandler):def on_any_event(self, event):# print("event noticed: " + event.event_type + # " on file " + event.src_path.encode('utf-8') + " at " + time.asctime())passdef __init__(self, pattern='*'):self.pattern = patterndef on_moved(self, event):print ("moved src path:"+ event.src_path.encode('utf-8'))print ("moved dest path:"+ event.dest_path)copyFile(event.dest_path, backupDir)def on_created(self, event):print ("created path:"+ event.src_path.encode('utf-8'))copyFile(event.src_path, backupDir)def on_deleted(self, event):print ("deleted path:"+ event.src_path.encode('utf-8'))def should_reload(self, event):if isinstance(event, FileSystemMovedEvent):return Truereturn Falsedef on_modified(self, event):print ("modified path:"+ event.src_path.encode('utf-8'))copyFile(event.src_path, backupDir)if __name__ == "__main__":logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(message)s',datefmt='%Y-%m-%d %H:%M:%S')# path = sys.argv[1] if len(sys.argv) > 1 else '.'# event_handler = LoggingEventHandler()event_handler = TestEventHandler()observer = Observer()observer.schedule(event_handler, baseDir, recursive=True)observer.start()try:while True:time.sleep(1)except KeyboardInterrupt:observer.stop()observer.join()補充一點:程序最終的效果,監測文件夾一旦有文件,就立馬剪切到備份路徑下,但是檢測位置里的文件夾將不會被刪除
Powered by Sublog
轉載于:https://www.cnblogs.com/muyr/p/3723507.html
總結
以上是生活随笔為你收集整理的watchdog应用实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Remoting 与 Webservic
- 下一篇: C#l里的位移符号