我在Mac上。我一直在使用Launchd的WatchPaths指令来查看文件更改的目录。我的脚本仅在从监视目录中添加或删除文件时触发。
但是,修改文件时脚本不会触发..
基本上,我正在尝试创建一个DIY Dropbox来同步我的Sites文件夹。
有没有办法通过launchd,bash或python执行此操作?
我认为linux有类似inotify的东西,但我不知道mac的解决方案。
答案 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。希望这有帮助!