watchdog应用实例

By 鬼猫猫 20130504 http://www.cnblogs.com/muyr/

实例:监测某文件夹,一旦文件夹里有文件,就把它剪切到其他服务器

  1. import sys
  2. import os, shutil
  3. import time
  4. import logging
  5. from watchdog.observers import Observer
  6. from watchdog.events import (LoggingEventHandler, FileSystemEventHandler)
  7. backupDir = 'D:/Work/backup'
  8. baseDir = 'S:/Test/Upload'
  9. def copyFile(fromFile, toDir):
  10. if os.path.isdir(fromFile):
  11. clearDir = fromFile[len(baseDir):]
  12. try:
  13. os.makedirs(toDir + clearDir)
  14. print 'NewFolder: ', fromFile.encode('utf-8'), ' ===> ', (toDir + fromFile[len(baseDir):]).encode('utf-8')
  15. except:
  16. print 'NewFolder-PASS:', fromFile.encode('utf-8')
  17. return
  18. else:
  19. clearDir = os.path.dirname(fromFile)[len(baseDir):]
  20. if not os.path.isdir(toDir + clearDir):
  21. os.makedirs(toDir + clearDir)
  22. try:
  23. time.sleep(0.2)
  24. shutil.move(fromFile, toDir + fromFile[len(baseDir):])
  25. print 'MoveFile: ', fromFile.encode('utf-8'), ' ===> ', (toDir + fromFile[len(baseDir):]).encode('utf-8')
  26. except:
  27. print 'MoveFile-PASS:', fromFile.encode('utf-8')
  28. return
  29. return
  30. class TestEventHandler(FileSystemEventHandler):
  31. def on_any_event(self, event):
  32. # print("event noticed: " + event.event_type +
  33. # " on file " + event.src_path.encode('utf-8') + " at " + time.asctime())
  34. pass
  35. def __init__(self, pattern='*'):
  36. self.pattern = pattern
  37. def on_moved(self, event):
  38. print ("moved src path:"+ event.src_path.encode('utf-8'))
  39. print ("moved dest path:"+ event.dest_path)
  40. copyFile(event.dest_path, backupDir)
  41. def on_created(self, event):
  42. print ("created path:"+ event.src_path.encode('utf-8'))
  43. copyFile(event.src_path, backupDir)
  44. def on_deleted(self, event):
  45. print ("deleted path:"+ event.src_path.encode('utf-8'))
  46. def should_reload(self, event):
  47. if isinstance(event, FileSystemMovedEvent):
  48. return True
  49. return False
  50. def on_modified(self, event):
  51. print ("modified path:"+ event.src_path.encode('utf-8'))
  52. copyFile(event.src_path, backupDir)
  53. if __name__ == "__main__":
  54. logging.basicConfig(level=logging.INFO,
  55. format='%(asctime)s - %(message)s',
  56. datefmt='%Y-%m-%d %H:%M:%S')
  57. # path = sys.argv[1] if len(sys.argv) > 1 else '.'
  58. # event_handler = LoggingEventHandler()
  59. event_handler = TestEventHandler()
  60. observer = Observer()
  61. observer.schedule(event_handler, baseDir, recursive=True)
  62. observer.start()
  63. try:
  64. while True:
  65. time.sleep(1)
  66. except KeyboardInterrupt:
  67. observer.stop()
  68. observer.join()

补充一点:程序最终的效果,监测文件夹一旦有文件,就立马剪切到备份路径下,但是检测位置里的文件夹将不会被删除

Powered by Sublog

watchdog应用实例的更多相关文章

  1. Watchdog问题实例分析

    1.日志获取 Watchdog相关的问题甚至需要以下所有的日志: logcat 通过adb logcat命令输出Android的一些当前运行日志,可以通过logcat的 -b 参数指定要输出的日志缓冲 ...

  2. linux驱动工程面试必问知识点

    linux内核原理面试必问(由易到难) 简单型 1:linux中内核空间及用户空间的区别?用户空间与内核通信方式有哪些? 2:linux中内存划分及如何使用?虚拟地址及物理地址的概念及彼此之间的转化, ...

  3. [Linux]——进程管理相关

    一些概念 程序program:通常以二进制程序放置在存储媒介中,以物理文件形式存在 进程process:程序通过用户执行被触发后,执行者的权限与属性.程序的代码和所需数据会被加载到内存中,OS给予这个 ...

  4. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  5. stm32之watchdog

    在嵌入式系统中,由于MCU的工作常常受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统陷入停滞状态,发送不可预料的后果,所以出 ...

  6. Python3学习之路~8.2 socket简单实例 实现ssh 发送大量数据

    实例1: 利用socket模拟客户端和服务器端各自收发一次数据: #Author:Zheng Na # 客户端 import socket # 声明socket类型,同时生成socket连接对象 cl ...

  7. Ajax实例OR技术原理 转自 (http://blog.csdn.net/evankaka )

    摘要:AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.AJAX 是一种用于创建快速动态网页的 ...

  8. Android Watchdog

    http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/core/java/com/android/server/Watchdog ...

  9. Redis 实例排除步骤

    Redis 应用案例 - 在问题中不断成长 原创 2017-02-05 杜亦舒  本文翻译整理自 Andy Grunwald 发布的一篇文章,写的是作者所在公司使用 Redis 时遇到的问题,以及处理 ...

随机推荐

  1. Yii2 给表添加字段后报错 Getting unknown property

    手动在数据库中添加了image字段 然后再模型类Image中的 rule方法也将image的验证规则放进去了 但是在 $model = new Image 后,使用$model->iamge 还 ...

  2. 基于SpringBoot+Mybatis+MySQL5.7的轻语音乐网

    一个基于SpringBoot+Mybatis+MySQL5.7的轻语音乐网站项目 1.主要用到的技术: 使用maven进行项目构建 使用Springboot+Mybatis搭建整个系统 使用ajax连 ...

  3. 用Python写个开心消消乐小游戏

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 提到开心消消乐这款小游戏,相信大家都不陌生,其曾在 2015 年获得过玩家最喜爱的移动单机游戏奖,受 ...

  4. 这嘎哒真TM那啥!Python版东北话编程火爆网络

    还记得那个刷爆朋友圈的那个文言文编程语言么? 这个项目是一位名为Huang Lingdong的大四学生创建的,当时,就连中科院计算所研究员.机器翻译领域知名专家刘群老师都赞叹道: 后生可畏 近日,Gi ...

  5. 【命令】vmstat命令和pmap命令

    博客链接地址:https://www.cnblogs.com/l75790/articles/9197733.html

  6. NPOI导入excel

    1.引用NPOI: using NPOI.HSSF.UserModel;using NPOI.HSSF.Util;using NPOI.SS.UserModel; 2.导出excel 1 privat ...

  7. 测试常用sql语句

    一.查询数值型数据:SELECT * FROM tb_name WHERE sum > 100;查询谓词:>,=,<,<>,!=,!>,!<,=>,=& ...

  8. (一)必须掌握的linux命令行快捷键

    1.序 使用linux时,接触最多的莫过于命令行,参差不齐,形形色色,对于短的命令行使用脑残的上下左右,back,del就够用了:而对于带有很多参数的长的命令行,再使用上下左右,del,back显得那 ...

  9. java中io流实现文件上传下载

    新建io.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" page ...

  10. leetcode上面用刷题不要使用static静态变量

    因为leetcode上面每个测试用例会使用之前的同一个类,使用静态变量会导致静态变量的值不被初始话从而使得本次测试用例,之前的静态变量,从而导致错误发生.