来自python watchdog的In_close_write事件

时间:2013-10-16 19:35:09

标签: python watchdog

我正在开发一个简单的监视程序脚本,它将在上传到我们FTP的一些非常大的图像上运行md5sum。看门狗似乎没有pyinotify中存在的IN_CLOSE_WRITE事件。我试着检查文件是否仍然作为解决方法打开但是不起作用。有没有人知道从看门狗获取close_write事件的解决方法?

import sys
import time

from watchdog.events import FileSystemEventHandler
from watchdog.observers import Observer


path = sys.argv[1]

class MyEventHandler(FileSystemEventHandler):
    def on_modified(self, event):
        print "File uploaded"
        # Is file still uploading?
        f = open(event.src_path)
        if f.closed:
            print "....run md5 & email admin"


event_handler = MyEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()
observer.join()

1 个答案:

答案 0 :(得分:0)

显然,看门狗不太可能。由于监视程序试图与平台无关,因此它只处理可在所有平台上检测到的事件。还有一个相关问题: Python (Watchdog) - Waiting for file to be created correctly

github也存在问题,关闭(基本上是wontfix): https://github.com/gorakhargosh/watchdog/issues/184

所以看起来使用pyinotify可能是最好的选择。