使用监视程序检测文件创建

2024-04-20 09:37:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试检测目录中何时创建具有给定名称的文件。多亏了watchdog我才这么做。已正确检测到创建,但我不知道如何在检测完成后正确终止应用程序。

我的代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import logging
import sys
import time

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

logging.basicConfig(level=logging.ERROR)

class MyEventHandler(FileSystemEventHandler):
    def __init__(self, observer, filename):
        self.observer = observer
        self.filename = filename

    def on_created(self, event):
        print "e=", event
        if not event.is_directory and event.src_path.endswith(self.filename):
            print "file created"
            self.observer.unschedule_all()
            self.observer.stop()

def main(argv=None):
    path = argv[1]
    filename = argv[2]
    observer = Observer()
    event_handler = MyEventHandler(observer, filename)
    observer.schedule(event_handler, path, recursive=False)
    observer.start()
    observer.join()
    return 0

if __name__ == "__main__":
    sys.exit(main(sys.argv))

我是python新手,我不知道哪里出了问题。检测似乎安排在专用线程中,join()方法正在等待此线程终止。因此,我认为我没有在观察器上调用正确的方法来停止等待/循环,但是看门狗文档似乎并不清楚可以使用哪些方法。

有人知道我怎样才能达到目标吗?


Tags: path方法fromimportselfeventmainlogging
1条回答
网友
1楼 · 发布于 2024-04-20 09:37:31

最后,在查看看门狗实现之后,不必在stop之前调用unschedule_all,这是自动完成的。删除包含此方法调用的行可以解决此问题,并且应用程序运行正常。

相关问题 更多 >