Dateierstellung mit Watchdog erkennen
Ich versuche zu erkennen, wann eine Datei mit einem bestimmten Namen in einem Verzeichnis erstellt wird. Ich mache es dankWachhund. Die Erstellung wird korrekt erkannt, aber ich weiß nicht, wie ich die Anwendung nach Abschluss der Erkennung ordnungsgemäß beenden kann.
Mein Code ist der folgende:
#!/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))
Ich bin neu in Python und kann nicht herausfinden, was falsch ist. Die Erkennung scheint in einem dedizierten Thread geplant zu sein, und die join () -Methode wartet darauf, dass dieser Thread beendet wird. Daher nehme ich an, dass ich nicht die richtige Methode für den Beobachter aufrufe, um das Warten / Schleifen zu beenden, aber die Watchdog-Dokumentation scheint wirklich nicht klar zu sein, welche Methoden verwendet werden können.
Hat jemand eine Idee, wie ich mein Ziel erreichen kann?