我必须观察给出的任何输入或在文件中对当前内容所做的任何更改,在进行任何修改时我需要运行位于同一文件夹中的python程序。
我尽力了解,但我无法取得任何好成绩。 如果有人能帮我解决这个问题,那将会有很大的帮助。
谢谢.. :))
答案 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)