我该如何“监视”文件的修改/变更?

14 投票
7 回答
29560 浏览
提问于 2025-04-16 01:27

我想在我指定的文件被修改时,打开我的 chromefirefox 浏览器。我该怎么“监视”这个文件,以便在它被修改时做点什么呢?

从编程的角度来看,步骤大概是这样的:每隔一秒设置一个永远不会结束的循环,先记录下文件最初的修改日期,然后每秒比较一次这个日期,当它发生变化时,就执行某个操作。

7 个回答

3

安装 inotify-tools,然后写一个简单的脚本来监视一个文件。

9

Linux内核有一个文件监控的工具,叫做inotify。对于Python来说,有一个可以使用的库,叫做pyinotify

有了这个工具,你可以根据自己的需求来构建想要的功能。

31

正如所提到的,你可以使用 pyinotify

比如:

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

这样做比不断询问要高效得多。内核会在执行操作时直接告诉你,而不是让你一直去问。

撰写回答