如何使pyinotify在文件的任何修改上运行程序?

时间:2011-05-13 19:24:33

标签: python pyinotify

我必须观察给出的任何输入或在文件中对当前内容所做的任何更改,在进行任何修改时我需要运行位于同一文件夹中的python程序。

我尽力了解,但我无法取得任何好成绩。 如果有人能帮我解决这个问题,那将会有很大的帮助。

谢谢.. :))

2 个答案:

答案 0 :(得分:10)

import pyinotify,subprocess
def onChange(ev):
    cmd = ['/bin/echo', 'File', ev.pathname, 'changed']
    subprocess.Popen(cmd).communicate()
wm = pyinotify.WatchManager()
wm.add_watch('file.watched', pyinotify.IN_MODIFY, onChange)
notifier = pyinotify.Notifier(wm)
notifier.loop()

cmd替换为您要执行的命令,将file.watched替换为您要观看的文件,显然。

答案 1 :(得分:2)

来自http://schettino72.wordpress.com/tag/inotify/

我正在努力为doit添加一些inotify优点。为此,我希望每次修改文件时都会收到一个和一个通知。 Inotify让人很难看到文件系统,而Pyinotify提供了一个python接口。但是使用它并不像我预期的那样直截了当。问题是编辑器以自己的方式操纵文件......

当我使用“echo”时它工作正常。但是当我尝试使用Emacs时,我收到了3个通知。使用VIM甚至最糟糕,我没有收到通知和错误消息!

获得phihag的优秀例子

wm.add_watch('file.watched', pyinotify.IN_MODIFY, onChange)

可能是:

wm.add_watch('file.watched', pyinotify.IN_CLOSE_WRITE, onChange)