最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡(jiǎn)單了解Python下用于監(jiān)視文件系統(tǒng)的pyinotify包

 更新時(shí)間:2015年11月13日 16:45:04   作者:China_OS  
這篇文章主要介紹了Python下用于監(jiān)視文件系統(tǒng)的pyinotify包,pyinotify基于inotify事件驅(qū)動(dòng)機(jī)制,需要的朋友可以參考下

什么是inotify:

  •   Inotify是一個(gè)事件驅(qū)動(dòng)的通知機(jī)制,Inotify 提供一個(gè)簡(jiǎn)單的API,使用最小的文件描述符,并且允許細(xì)粒度監(jiān)控。與 inotify 的通信是通過(guò)系統(tǒng)調(diào)用實(shí)現(xiàn)。可用的函數(shù)如下所示:
  •   inotify_init  是用于創(chuàng)建一個(gè)inotify實(shí)例的系統(tǒng)調(diào)用,并返回一個(gè)指向該實(shí)例的文件描述符。
  •   inotify_init1  與inotify_init相似,并帶有附加標(biāo)志。如果這些附加標(biāo)志沒(méi)有指定,將采用與inotify_init相同的值。
  •   inotify_add_watch 增加對(duì)文件或者目錄的監(jiān)控,并指定需要監(jiān)控哪些事件。標(biāo)志用于控制是否將事件添加到已有的監(jiān)控中,是否只有路徑代表一個(gè)目錄才進(jìn)行監(jiān)控,是否要追蹤符號(hào)鏈接,是否進(jìn)行一次性監(jiān)控,當(dāng)首次事件出現(xiàn)后就停止監(jiān)控。
  •   inotify_rm_watch 從監(jiān)控列表中移出監(jiān)控項(xiàng)目。
  •   read 讀取包含一個(gè)或者多個(gè)事件信息的緩存。
  •   close 關(guān)閉文件描述符,并且移除所有在該描述符上的所有監(jiān)控。當(dāng)關(guān)于某實(shí)例的所有文件描述符都關(guān)閉時(shí),資源和下層對(duì)象都將釋放,以供內(nèi)核再次使用。

因此,典型的監(jiān)控程序需要進(jìn)行如下操作:

  •   使用 inotify_init 打開(kāi)一個(gè)文件描述符
  •   添加一個(gè)或者多個(gè)監(jiān)控
  •   等待事件
  •   處理事件,然后返回并等待更多事件
  •   當(dāng)監(jiān)控不再活動(dòng)時(shí),或者接到某個(gè)信號(hào)之后,關(guān)閉文件描述符,清空,然后退出。

pyinotify包的安裝

git clone https://github.com/seb-m/pyinotify.git
cd pyinotify/
python setup.py install


Inotify 可以監(jiān)視的文件系統(tǒng)事件包括:

IN_ACCESS,即文件被訪問(wèn)
IN_MODIFY,文件被write
IN_ATTRIB,文件屬性被修改,如chmod、chown、touch等
IN_CLOSE_WRITE,可寫文件被close
IN_CLOSE_NOWRITE,不可寫文件被close
IN_OPEN,文件被open
IN_MOVED_FROM,文件被移走,如mv
IN_MOVED_TO,文件被移來(lái),如mv、cp
IN_CREATE,創(chuàng)建新文件
IN_DELETE,文件被刪除,如rm
IN_DELETE_SELF,自刪除,即一個(gè)可執(zhí)行文件在執(zhí)行時(shí)刪除自己
IN_MOVE_SELF,自移動(dòng),即一個(gè)可執(zhí)行文件在執(zhí)行時(shí)移動(dòng)自己
IN_UNMOUNT,宿主文件系統(tǒng)被umount
IN_CLOSE,文件被關(guān)閉,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
IN_MOVE,文件被移動(dòng),等同于(IN_MOVED_FROM | IN_MOVED_TO)


pyinotify使用例子

#!/usr/bin/env python
# encoding:utf-8
 
import os
from pyinotify import WatchManager, Notifier, \
ProcessEvent,IN_DELETE, IN_CREATE,IN_MODIFY
 
class EventHandler(ProcessEvent):
 """事件處理"""
 def process_IN_CREATE(self, event):
  print  "Create file: %s " %  os.path.join(event.path,event.name)
 
 def process_IN_DELETE(self, event):
  print  "Delete file: %s " %  os.path.join(event.path,event.name)

 def process_IN_MODIFY(self, event):
   print  "Modify file: %s " %  os.path.join(event.path,event.name)
 
def FSMonitor(path='.'):
  wm = WatchManager() 
  mask = IN_DELETE | IN_CREATE |IN_MODIFY
  notifier = Notifier(wm, EventHandler())
  wm.add_watch(path, mask,auto_add=True,rec=True)
  print 'now starting monitor %s'%(path)
  while True:
   try:
     notifier.process_events()
     if notifier.check_events():
       notifier.read_events()
   except KeyboardInterrupt:
     notifier.stop()
     break
 
if __name__ == "__main__":
 FSMonitor('/home/firefoxbug')

相關(guān)文章

  • 如何使用VSCode愉快的寫Python于調(diào)試配置步驟

    如何使用VSCode愉快的寫Python于調(diào)試配置步驟

    從我的使用經(jīng)驗(yàn)出發(fā),可以說(shuō)VSCode用來(lái)寫Python真的是再合適不過(guò)了,你將體驗(yàn)到絲滑的編程體驗(yàn)和無(wú)限擴(kuò)展的可能。而且,如果你的項(xiàng)目是包含多種語(yǔ)言的,比如Web開(kāi)發(fā),你不必再開(kāi)多個(gè)編輯器和其他工具,因?yàn)檫@一切都可以在VSCode里完成了
    2018-04-04
  • Python 字符串池化的前提

    Python 字符串池化的前提

    這篇文章主要介紹了Python 字符串池化的前提,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • python如何實(shí)現(xiàn)excel數(shù)據(jù)添加到mongodb

    python如何實(shí)現(xiàn)excel數(shù)據(jù)添加到mongodb

    本文介紹了python是如何實(shí)現(xiàn)excel數(shù)據(jù)添加到mongodb,為了將數(shù)據(jù)導(dǎo)入mongodb,引入了pymongo,xlrd包,需要的朋友可以參考下
    2015-07-07
  • Django 自定義分頁(yè)器的實(shí)現(xiàn)代碼

    Django 自定義分頁(yè)器的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Django 自定義分頁(yè)器的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • python刪除文本中行數(shù)標(biāo)簽的方法

    python刪除文本中行數(shù)標(biāo)簽的方法

    這篇文章主要為大家詳細(xì)介紹了python刪除文本中行數(shù)標(biāo)簽的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Python?urllib庫(kù)的使用指南詳解

    Python?urllib庫(kù)的使用指南詳解

    所謂網(wǎng)頁(yè)抓取,就是把URL地址中指定的網(wǎng)絡(luò)資源從網(wǎng)絡(luò)流中讀取出來(lái),保存到本地。?在Python中有很多庫(kù)可以用來(lái)抓取網(wǎng)頁(yè),本文將講解其中的urllib庫(kù),感興趣的可以了解一下
    2022-04-04
  • Django框架文件上傳與自定義圖片上傳路徑、上傳文件名操作分析

    Django框架文件上傳與自定義圖片上傳路徑、上傳文件名操作分析

    這篇文章主要介紹了Django框架文件上傳與自定義圖片上傳路徑、上傳文件名操作,結(jié)合實(shí)例形式分析了Django框架文件上傳的原理、步驟、實(shí)現(xiàn)方法以及圖片上傳時(shí)自定義上傳路徑、上傳文件名的相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • 深入了解Python中Pytest Markers的使用方法

    深入了解Python中Pytest Markers的使用方法

    從這篇開(kāi)始,逐一解決fixture是啥,mark是啥,參數(shù)request是啥,鉤子函數(shù)是啥,parametrize參數(shù)化是啥,這些問(wèn)題,本片先介紹一下mark是啥,以及如何使用
    2023-09-09
  • Python正則表達(dá)式基本原理

    Python正則表達(dá)式基本原理

    正則表達(dá)式是一個(gè)特殊的符號(hào)系列,它可以幫助我們檢查某個(gè)字符串和某種模式匹配。在python中,re庫(kù)擁有全部的正則表達(dá)式的功能。想了解更多的小伙伴可以參考閱讀本文
    2023-04-04
  • 詳解Python和Rust中內(nèi)存管理機(jī)制的實(shí)現(xiàn)與對(duì)比

    詳解Python和Rust中內(nèi)存管理機(jī)制的實(shí)現(xiàn)與對(duì)比

    Python和Rust都采用了垃圾收集(Garbage?Collection)機(jī)制來(lái)管理內(nèi)存,但它們各自的實(shí)現(xiàn)方式有很大的不同,下面就跟隨小編一起來(lái)深入了解下二者的區(qū)別吧
    2024-03-03

最新評(píng)論

游戏| 定边县| 陇南市| 轮台县| 定远县| 吉木萨尔县| 佛冈县| 清远市| 同仁县| 墨脱县| 莱州市| 济宁市| 河池市| 江川县| 易门县| 乌海市| 乡城县| 铜陵市| 深泽县| 彭泽县| 墨玉县| 张家口市| 五台县| 凭祥市| 靖边县| 富阳市| 冷水江市| 乌鲁木齐市| 桦南县| 济源市| 德清县| 绩溪县| 德江县| 靖边县| 株洲市| 衡山县| 宜兴市| 江城| 石阡县| 章丘市| 公安县|