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')
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应用实例的更多相关文章
- Watchdog问题实例分析
1.日志获取 Watchdog相关的问题甚至需要以下所有的日志: logcat 通过adb logcat命令输出Android的一些当前运行日志,可以通过logcat的 -b 参数指定要输出的日志缓冲 ...
- linux驱动工程面试必问知识点
linux内核原理面试必问(由易到难) 简单型 1:linux中内核空间及用户空间的区别?用户空间与内核通信方式有哪些? 2:linux中内存划分及如何使用?虚拟地址及物理地址的概念及彼此之间的转化, ...
- [Linux]——进程管理相关
一些概念 程序program:通常以二进制程序放置在存储媒介中,以物理文件形式存在 进程process:程序通过用户执行被触发后,执行者的权限与属性.程序的代码和所需数据会被加载到内存中,OS给予这个 ...
- 最近学习工作流 推荐一个activiti 的教程文档
全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...
- stm32之watchdog
在嵌入式系统中,由于MCU的工作常常受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统陷入停滞状态,发送不可预料的后果,所以出 ...
- Python3学习之路~8.2 socket简单实例 实现ssh 发送大量数据
实例1: 利用socket模拟客户端和服务器端各自收发一次数据: #Author:Zheng Na # 客户端 import socket # 声明socket类型,同时生成socket连接对象 cl ...
- Ajax实例OR技术原理 转自 (http://blog.csdn.net/evankaka )
摘要:AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术.AJAX 是一种用于创建快速动态网页的 ...
- Android Watchdog
http://androidxref.com/6.0.1_r10/xref/frameworks/base/services/core/java/com/android/server/Watchdog ...
- Redis 实例排除步骤
Redis 应用案例 - 在问题中不断成长 原创 2017-02-05 杜亦舒 本文翻译整理自 Andy Grunwald 发布的一篇文章,写的是作者所在公司使用 Redis 时遇到的问题,以及处理 ...
随机推荐
- python 协程并发下载图片
1 import aiohttp 2 import asyncio 3 import time 4 5 async def dl_coroutine(session,url): 6 print('开始 ...
- matplotlib的学习10-Contours 等高线图
import matplotlib.pyplot as plt import numpy as np ''' 画等高线 数据集即三维点 (x,y) 和对应的高度值,共有256个点. 高度值使用一个 h ...
- Python爬虫:爬取喜马拉雅音频数据详解
前言 喜马拉雅是专业的音频分享平台,汇集了有声小说,有声读物,有声书,FM电台,儿童睡前故事,相声小品,鬼故事等数亿条音频,我最喜欢听民间故事和德云社相声集,你呢? 今天带大家爬取喜马拉雅音频数据,一 ...
- 装逼篇 | 抖音超火的九宫格视频是如何生成的,Python 告诉你答案
1. 场景 如果你经常刷抖音和微信朋友圈,一定发现了最近九宫格短视频很火! 从朋友圈九宫格图片,到九宫格视频,相比传统的图片视频,前者似乎更有个性和逼格 除了传统的剪辑软件可以实现,是否有其他更加快捷 ...
- NET 5 原子操作、接口限流Semaphore以及性能测试JMeter
一.Semaphore 限流也可使用令牌桶算法+redis 1.Semaphore定义 类似互斥锁,但它可以允许多个线程同时访问一个共享资源 通过使用一个计数器来控制对共享资源的访问,如果计数器大于0 ...
- MSSQL数据库一对多和多对一查询的转换
前言 处理一对多关系,有两种方式 (1)创建关系表,将对应关系保存在物理表中. (2)表中添加一个字段,将多关系的值以特殊符号隔开进行保存. 本例使用的就是,以逗号隔开(InterestID='1,2 ...
- 机器学习-决策树之ID3算法
概述 决策树(Decision Tree)是一种非参数的有监督学习方法,它是一种树形结构,所以叫决策树.它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这些规则,以解决分类和回 ...
- python的if和else语句
1.单分支选择结构: if表达式: 语句块 2.双分支结构 if表达式: 语句块1 else: 语句块2 3.多分支结构 if 表达式1: 语句块1 elif 表达式2: 语句块2 elif 表达式3 ...
- redo log 有什么作用?
mysql 为了提升性能不会把每次的修改都实时同步到磁盘,而是会先存到Boffer Pool(缓冲池)里头,把这个当作缓存来用.然后使用后台线程去做缓冲池和磁盘之间的同步. 那么问题来了,如果还没来的 ...
- Spring Boot Starters
Spring Boot Starters 摘自 https://www.nosuchfield.com/2017/10/15/Spring-Boot-Starters/ 2017-10-15 Spri ...