• 技术文章 >Python技术 >Python高级

    Python的监控功能示例

    PythonPython2019-06-19 09:56:28原创3754
    Pyinotify是一个Python模块,用来监测文件系统的变化。 Pyinotify依赖于Linux内核的功能—inotify(内核2.6.13合并)。 inotify的是一个事件驱动的通知器,其通知接口通过三个系统调用从内核空间到用户空间。pyinotify结合这些系统调用,并提供一个顶级的抽象和一个通用的方式来处理这些功能。

    pyinotify 就是通过 调用系统的inotify来实现通知的

    Inotify 既可以监视文件,也可以监视目录

    Inotify 使用系统调用而非 SIGIO 来通知文件系统事件。

    Inotify 可以监视的文件系统事件包括:

    360截图17001018111136100.png

    案例:Python监控目录变化

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    #!/usr/bin/env python

    #coding=utf-8

      

    import os

    from pyinotify import WatchManager, Notifier, ProcessEvent, IN_DELETE, IN_CREATE,IN_MODIFY

    wm = WatchManager()

    mask = IN_DELETE | IN_CREATE |IN_MODIFY  # watched events

      

    class PFilePath(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)

      

    if __name__ == "__main__":

      

      notifier = Notifier(wm, PFilePath())

      wdd = wm.add_watch('.', mask, rec=True)

      

      while True:

        try :

          notifier.process_events()

          if notifier.check_events():

            notifier.read_events()

        except KeyboardInterrupt:

          notifier.stop()

          break

    专题推荐:python
    上一篇:用Python绘制几个动画 下一篇:用Python来统计本机CPU利用率

    相关文章推荐

    • Python举例实现马耳可夫链算法• Python中的多态怎么理解?• Python中的center()是怎么用的

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网