如何“观察”文件以进行修改/更改?

时间:2010-07-18 04:39:47

标签: python linux

当我指定的文件被修改时,我想调用我的chromefirefox浏览器。我怎么能“看”那个文件在修改后做某事?

以编程方式看起来步骤是......基本上每隔一秒左右设置一个永不停止的间隔并缓存初始修改日期,然后每隔一秒比较日期,当它改变时调用X.

7 个答案:

答案 0 :(得分:25)

如上所述,您可以使用pyinotify

E.g:

import webbrowser
import pyinotify

class ModHandler(pyinotify.ProcessEvent):
    # evt has useful properties, including pathname
    def process_IN_CLOSE_WRITE(self, evt):
            webbrowser.open(URL)

handler = ModHandler()
wm = pyinotify.WatchManager()
notifier = pyinotify.Notifier(wm, handler)
wdd = wm.add_watch(FILE, pyinotify.IN_CLOSE_WRITE)
notifier.loop()

这比投票更有效。内核告诉你何时进行操作,而不必经常询问。

答案 1 :(得分:8)

Linux内核有一个名为inotify的文件监控API。 python绑定是pyinotify

有了它,你可以建立你想要的东西。

答案 2 :(得分:3)

安装inotify-tools并编写一个简单的shell脚本来观看文件。

答案 3 :(得分:2)

另一种选择是使用校验和。您可以使用类似于鼻子的nosy.py的模式。我使用dingus中的一个来检查我的目录以进行修改并运行测试套件。

答案 4 :(得分:2)

使用FAM将监视器放在文件上。

答案 5 :(得分:0)

使用快速哈希函数,cron作业,然后离开!

此外,这看起来很相关:http://en.wikipedia.org/wiki/Inotify

答案 6 :(得分:0)

显然,watchdog适用于Linux和Linux。 OSX,可用于监视目录中的更改以及优秀的示例文档。它也适用于python3.x,以防你不想被迫使用python2.x