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')
return
else:
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')
return return class 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())
pass def __init__(self, pattern='*'):
self.pattern = pattern def 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 True
return False def 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

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. 【漏洞复现】Struts2-045分析(CVE-2017-5638)

    如果需要大佬写好的脚本,可以直接去github上面搜 struts2 - 045 一个还比较出名的漏洞,因为涉及到利用Gopher协议反弹shell,所以写篇文章来简单学习下这个漏洞. Struts2 ...

  2. python之解压序列并赋值给变量

    N个数量的序列(可迭代对象),赋值给N个变量. 字符串: 1 #!usr/bin/env python3 2 # -*- Coding=utf-8 -*- 3 4 ''' 5 解压序列(或者任何可迭代 ...

  3. 【终极版】利用阿里云云解析API实现动态域名解析(ddns),搭建私有服务器【含可执行文件和源码】

    前言:懒人可以直接往下看,有代码和全部资源可以下载.此文章是先前文章的定时版,主要是添加了定时执行的功能,并且将代码中的配置项放置到了app.config文件中,方便不懂开发的朋友修改使用.未经许可请 ...

  4. 【进程/作业管理】篇章一:Linux进程及其管理(系统监控类工具)----glances、dstat

    glances   dstat   glances命令详解 相对于htop工具的使用,这里介绍一下glances工具的使用,我个人是比较喜欢这款工具的,主要就是由于glances这款工具可以将系统状态 ...

  5. Android驱动学习-app调用内核驱动过程(驱动框架回顾)

    考研已经过去了,android驱动的学习也断了半年多了,现在重新捡起来学习,回顾一下Android驱动的大体框架. Android系统的核心是java,其有一个David虚拟机.Android-app ...

  6. Raft算法系列教程4:日志不一致的解决

    网络不可能一直处于正常情况,因为Leader或者某个Follower有可能会崩溃,从而导致日志不能一直保持一致.因此存在以下三种情况: (1)Follower缺失当前Leader上存在的日志条目.(2 ...

  7. tail常用命令总结

    tail命令作用: tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到 ...

  8. 漫谈JSON Web Token(JWT)

    一.背景 传统的单体应用基于cookie-session的身份验证流程一般是这样的: 用户向服务器发送账户和密码. 服务器验证账号密码成功后,相关数据(用户角色.登录时间等)都保存到当前会话中. 服务 ...

  9. LeapMotion控制器 java语言开发笔记--(连接控制器)

    (1)为了连接LeapMotion控制器,创建controller对象,这个对象自动创建与控制器的服务或者后台程序连接,然后捕获数据提供给你的应用程序.可以使用该对象来获取连接信息. (2)获取Fra ...

  10. ICPC Central Russia Regional Contest (CRRC 19)题解

    题目连接:https://codeforces.com/gym/102780 寒假第二次训练赛,(某菜依旧是4个小时后咕咕咕),战况还行,个人表现极差(高级演员) A:Green tea 暴力枚举即可 ...