【发布时间】:2014-04-05 05:12:55
【问题描述】:
我正在尝试查看一些文本文件何时使用watchdog 进行修改,但我似乎只获得.tmp 文件的事件。我知道崇高文本是如何保存文件的,但我不应该也为实际文件触发一个事件吗?
这是我在尝试以崇高文本将文件保存在位置 /home/john/resources/css/style.css 时得到的结果:
/home/john/resources/css/.sublaa.tmp
/home/john/resources/css/.sublaa.tmp
/home/john/resources/css/.sublaa.tmp
似乎我只为 tmp 文件触发了事件,而不是为实际文件触发了事件。这实际上适用于 MacOSX,但不适用于 Ubuntu。
#!/usr/bin/python
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class MyHandler(FileSystemEventHandler):
def on_any_event(self, event):
print event.src_path
if __name__ == "__main__":
event_handler = MyHandler()
observer = Observer()
observer.schedule(event_handler, path='.', recursive=False)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
【问题讨论】:
-
我不知道,但我认为你应该尝试github.com/seb-m/pyinotify 看看它是否有同样的问题。
-
首先弄清楚 sublime text 实际上在保存文件时做了什么。例如。使用
inotifywait -m .确认您期望的创建/删除事件确实发生了。否则一切都是猜测。我假设使用 touch 和 rm 时没有此类问题。 -
如果您将 MyHandler 类更改为看门狗 LoggingEventHandler(),您可以跟踪更改。但是,我不确定为什么在我们编写自己的处理程序时它会丢失更改