Inotify 是一个 Linux 内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等。您还可以跟踪活动的源头和目标等细节。

使用 inotify 很简单:创建一个文件描述符,附加一个或多个监视器(一个监视器 是一个路径和一组事件),然后使用 read 方法从描述符获取事件。read 并不会用光整个周期,它在事件发生之前是被阻塞的。

更好的是,因为 inotify 通过传统的文件描述符工作,您可以利用传统的 select 系统调用来被动地监控监视器和许多其他输入源。两种方法 — 阻塞文件描述符和使用 select— 都避免了繁忙轮询。

python对应的监听文件事件的lib为pyinotify ,由于mac上安装不了inotify,所以直接在网上找的代码,供题主参考;原连接为:http://www.tuicool.com/articles/fQ7bUr;

思路:通过pyinotify监听文件事件,通过轮询文件事件,来做相应的处理;按照生产者消费者的模型处理,生产者轮询文件事件,放进共享队列;消费者轮询消费共享队列中的数据。

inotify is not available on macosx-10.11-intel

import os

import datetime

import pyinotify

import logging

class MyEventHandler(pyinotify.ProcessEvent):

logging.basicConfig(level=logging.INFO,filename='/var/log/monitor.log')

#自定义写入那个文件,可以自己修改

logging.info("Starting monitor...")

def process_IN_ACCESS(self, event):

print "ACCESS event:", event.pathname

logging.info("ACCESS event : %s %s" % (os.path.join(event.path,event.name),datetime.datetime.now()))

def process_IN_ATTRIB(self, event):

print "ATTRIB event:", event.pathname

logging.info("IN_ATTRIB event : %s %s" % (os.path.join(event.path,event.name),datetime.datetime.now()))

def process_IN_CLOSE_NOWRITE(self, event):

print "CLOSE_NOWRITE event:", event.pathname

logging.info("CLOSE_NOWRITE event : %s %s" % (os.path.join(event.path,event.name),datetime.datetime.now()))

def process_IN_CLOSE_WRITE(self, event):

print "CLOSE_WRITE event:", event.pathname

logging.info("CLOSE_WRITE event : %s %s" % (os.path.join(event.path,event.name),datetime.datetime.now()))

def process_IN_CREATE(self, event):

print "CREATE event:", event.pathname

logging.info("CREATE event : %s %s" % (os.path.join(event.path,event.name),datetime.datetime.now()))

def process_IN_DELETE(self, event):

print "DELETE event:", event.pathname

logging.info("DELETE event : %s %s" % (os.path.join(event.path,event.name),datetime.datetime.now()))

def process_IN_MODIFY(self, event):

print "MODIFY event:", event.pathname

logging.info("MODIFY event : %s %s" % (os.path.join(event.path,event.name),datetime.datetime.now()))

def process_IN_OPEN(self, event):

print "OPEN event:", event.pathname

logging.info("OPEN event : %s %s" % (os.path.join(event.path,event.name),datetime.datetime.now()))

def main():

# watch manager

wm = pyinotify.WatchManager()

wm.add_watch('/tmp', pyinotify.ALL_EVENTS, rec=True)

#/tmp是可以自己修改的监控的目录

# event handler

eh = MyEventHandler()

# notifier

notifier = pyinotify.Notifier(wm, eh)

notifier.loop()

if __name__ == '__main__':

main()

[root@centos6 monitor-folder]# python total-monitor.py

OPEN event: /tmp/.ICE-unix

CLOSE_NOWRITE event: /tmp/.ICE-unix

OPEN event: /tmp

CLOSE_NOWRITE event: /tmp

OPEN event: /tmp

CLOSE_NOWRITE event: /tmp

DELETE event: /tmp/aa

DELETE event: /tmp/adduser.conf

DELETE event: /tmp/adjtime

DELETE event: /tmp/aliases

DELETE event: /tmp/bash.bashrc

DELETE event: /tmp/bindresvport.blacklist

DELETE event: /tmp/environment

DELETE event: /tmp/fstab

DELETE event: /tmp/ipt.err

DELETE event: /tmp/ipt.out

DELETE event: /tmp/krb5.conf

DELETE event: /tmp/odbc.ini

DELETE event: /tmp/odbcinst.ini

DELETE event: /tmp/timezone

DELETE event: /tmp/ucf.conf

DELETE event: /tmp/warnquota.conf

DELETE event: /tmp/wgetrc

DELETE event: /tmp/xinetd.conf

CREATE event: /tmp/aa

OPEN event: /tmp/aa

ATTRIB event: /tmp/aa

CLOSE_WRITE event: /tmp/aa

CREATE event: /tmp/bb

OPEN event: /tmp/bb

ATTRIB event: /tmp/bb

CLOSE_WRITE event: /tmp/bb

CREATE event: /tmp/cc

OPEN event: /tmp/cc

ATTRIB event: /tmp/cc

CLOSE_WRITE event: /tmp/cc

上面是打印出来的监控状态,下面是我的操作代码:

[root@centos6 tmp]# ls

aa bash.bashrc ipt.err odbcinst.ini wgetrc

adduser.conf bindresvport.blacklist ipt.out timezone xinetd.conf

adjtime environment krb5.conf ucf.conf

aliases fstab odbc.ini warnquota.conf

[root@centos6 tmp]# rm -rf *

[root@centos6 tmp]# touch aa

[root@centos6 tmp]# touch bb

[root@centos6 tmp]# touch cc

[root@centos6 tmp]#

pythonmkdir语法错误_Python mkdir一个有难度的问题相关推荐

  1. pythonmkdir语法错误_Python:windows创建文件夹时出错操作系统.mkdir使用方括号

    在Windows上,当我试图创建以下文件夹时:os.mkdir('H:\\__ Photos\\____Photos to be sorted\\[ Photo sorting process ]\\ ...

  2. python等号语法错误_Python干货:代码编写规范

    本章节我们来讲述一下Python的编码规范,通过详细对代码编写规则以及命名规范等进行介绍. 1.编写规则 Python采用PEP 8 的编码规范,接下来会讲解一些我们在学习Python过程应该严格遵守 ...

  3. python在冒号处显示语法错误_python冒号错误语法无效

    问题1 看看错误:File "", line 3 def__init__(self,name): ^ SyntaxError: invalid syntax 在def和__init ...

  4. python常见的语法错误_python编程中常见错误

    python编程培训中常见错误 最后,我想谈谈使用更多python函数(数据类型.函数.模块.类等)时可能遇到的问题.由于篇幅有限,我们试图将其简化,特别是一些高级概念.有关更多详细信息,请阅读学习p ...

  5. python setup.py install 提示语法错误_python – 使用“’packages’:[],”安装setup.py时无效的语法...

    我是编程新手,过去几周我一直在研究 python.大多数指令来自资源"学习 Python的艰难之路". 现在我的问题,我刚刚开始进行测验,基本上你已经完成并安装了自己的setup. ...

  6. python编程时显示语法错误_Python编程的10个经典错误及解决办法

    接触了很多Python爱好者,有初学者,亦有转行人.不论大家学习Python的目的是什么,总之,学习Python前期写出来的代码不报错就是极好的.下面,严小样儿为大家罗列出Python3十大经典错误及 ...

  7. python常见的语法错误_python常见语法错误有什么

    本文主要整理了Python中常见的语法错误,需要的小伙伴可以学习. 1:TypeError: must be str, not int 类型错误name = '小王' age = 20 print(' ...

  8. python中print语法错误_Python 3.x中使用print函数出现语法错误(SyntaxError: invalid syntax)的原因...

    在安装了最新版本的Python 3.x版本之后, 去参考别人的代码(基于Python 2.x写的教程),去利用print函数,打印输出内容时,结果却遇到print函数的语法错误: SyntaxErro ...

  9. python语法错误概述_python语法错误

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我是python中的新手,当我想在模块中编译代码时,我遇到语法错误:invail ...

最新文章

  1. 【linux命令】setterm控制终端属性命令(中英文)
  2. SQL基础学习总结:1(数据库)
  3. 【PC工具】离线地图图片地图瓦片下载神器map-download地图下载器
  4. php接收rs485的数据如何处理,为什么485不能连续接收?
  5. 事物 @Transactional
  6. linux系统安装python包_Linux系统安装Python
  7. HDU3534 给你一个树让你找出其中最长路径以及个数数
  8. mariadb安装_MariaDB CentOS 安装的时候如何确定 Repo 地址
  9. 【脑电信号】基于matlab小波变换脑电信号特征提取【含Matlab源码 511期】
  10. 计算机英语词汇的特点,计算机专业英语词汇特点.ppt
  11. 一键智能切割(分割)整轨wav、flac、ape音乐文件
  12. 把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩
  13. C99 designator ‘name’ outside aggregate initializer
  14. doevents raiseevent withevents
  15. 自我实现者共同的性格特征
  16. 基于51单片机的信号发生器设计
  17. IAR之IAR EWARM软件软件配置
  18. 第6章第9节:幻灯片背景:使用纹理和图像作为幻灯片的背景 [PowerPoint精美幻灯片实战教程]
  19. 使用Java快速实现进度条(转)
  20. 一篇文章上手SSH开发,单表全过程,全代码

热门文章

  1. 为什么大数据分析很重要
  2. c语言单片机循环程序,单片机c语言教程:C51循环语句
  3. java的连接 初始化_java类从加载、连接到初始化过程详解
  4. java编写万年历_怎么用JAVA编写万年历!
  5. 利用Caffe训练模型(solver、deploy、train_val)+python使用已训练模型
  6. python中函数 reshape(-1,1)
  7. H3C交换机配置DHCP服务器
  8. python爬取公众号,用最简单的方式爬虫
  9. vue文件上传 vue-simple-upload的使用方法
  10. Component 父子组件关系