如何查看目录以进行文件修改

时间:2012-05-13 03:01:06

标签: python macos bash launchd

我在Mac上。我一直在使用Launchd的WatchPaths指令来查看文件更改的目录。我的脚本仅在从监视目录中添加或删除文件时触发。

但是,修改文件时脚本不会触发..

基本上,我正在尝试创建一个DIY Dropbox来同步我的Sites文件夹。

有没有办法通过launchd,bash或python执行此操作?

我认为linux有类似inotify的东西,但我不知道mac的解决方案。

1 个答案:

答案 0 :(得分:2)

我尝试使用MacFSEvents来解决问题 包(available on PyPI):

import os

from fsevents import Observer, Stream


def callback(file_event):
    print file_event.name # the path of the modified file


def main():
    observer = Observer()
    observe_path = os.getcwd() # just for this example
    stream = Stream(callback, observe_path, file_events=True)
    observer.start()
    observer.schedule(stream)


if __name__ == '__main__':
    main()

每次创建,修改或删除文件时都会调用callback(您可以使用file_event.mask的值检查发生了哪个事件。)

请注意,您可能希望观察主线程之外的线程(上述程序拒绝退出,即使在KeyboardInterrupt上)。有关API的更多信息,请参阅MacFSEvents README。希望这有帮助!