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

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

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

什么是inotify:

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

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

  •   使用 inotify_init 打開一個文件描述符
  •   添加一個或者多個監(jiān)控
  •   等待事件
  •   處理事件,然后返回并等待更多事件
  •   當監(jiān)控不再活動時,或者接到某個信號之后,關(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,即文件被訪問
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,文件被移來,如mv、cp
IN_CREATE,創(chuàng)建新文件
IN_DELETE,文件被刪除,如rm
IN_DELETE_SELF,自刪除,即一個可執(zhí)行文件在執(zhí)行時刪除自己
IN_MOVE_SELF,自移動,即一個可執(zhí)行文件在執(zhí)行時移動自己
IN_UNMOUNT,宿主文件系統(tǒng)被umount
IN_CLOSE,文件被關(guān)閉,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
IN_MOVE,文件被移動,等同于(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)驗出發(fā),可以說VSCode用來寫Python真的是再合適不過了,你將體驗到絲滑的編程體驗和無限擴展的可能。而且,如果你的項目是包含多種語言的,比如Web開發(fā),你不必再開多個編輯器和其他工具,因為這一切都可以在VSCode里完成了
    2018-04-04
  • Python 字符串池化的前提

    Python 字符串池化的前提

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

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

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

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

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

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

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

    Python?urllib庫的使用指南詳解

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

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

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

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

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

    Python正則表達式基本原理

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

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

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

最新評論

衡水市| 安康市| 马龙县| 平和县| 梅州市| 德兴市| 安吉县| 平陆县| 游戏| 朝阳区| 安新县| 吉隆县| 兴业县| 辰溪县| 辉南县| 夏河县| 布拖县| 大悟县| 涿州市| 千阳县| 武鸣县| 辽中县| 名山县| 沛县| 大埔区| 申扎县| 翼城县| 东兴市| 东台市| 察隅县| 福鼎市| 筠连县| 黎城县| 上栗县| 平武县| 香港| 同仁县| 集安市| 嘉善县| 台前县| 宁陕县|