如何用python语言监控文件或目录变化

Python011

如何用python语言监控文件或目录变化,第1张

import os, time

path_to_watch = "."before = dict ([(f, None) for f in os.listdir (path_to_watch)])while 1:

time.sleep (10)

after = dict ([(f, None) for f in os.listdir (path_to_watch)])

added = [f for f in after if not f in before]

removed = [f for f in before if not f in after] if added: print "Added: ", ", ".join (added) if removed: print "Removed: ", ", ".join (removed)

before = after

办法是在循环中不断读取目录以及目录中文件的最后修改时间,如果有变更,则说说文件被修改。

这种办法需要不断的循环读取文件信息,这对cpu占用较高,同时也会产生一定的磁盘IO,短时间小范围使用尚可,如果长时间运行在服务器上,或者监控一个包含很多文件的目录则不可取。

办法之二是利用操作系统提供的功能来实现。

比如在Windows中,可以利用Windows API【ReadDirectoryChangesW】来实现。这可以免去大量的磁盘IO。因为文件修改的频率一般不高,可以使用定计时器进行循环,对cup的占用也会少很多。