Python Watchdog -Prozess vorhandenen Dateien zum Start
https://www.reddit.com/r/learnpython/co ... s/fn34dgk/
Der erste Ansatz scheint zu funktionieren, aber ich benutze keine Queue. Ich habe Dateienpaare und ich kann nicht auf diese Dateien reagieren, bis das Paar empfangen wird. Deshalb füge ich eine Liste hinzu, wenn sie hereinkommen und dann nach dem Paar überprüfe. Wenn es vorhanden ist, mache ich Zeug. < /P>
Hier ist meine Version des Ansatzes: < /p>
Code: Select all
class Watcher():
observer = None
directory = None
pattern = None
def __init__(self, directory, pattern):
self.observer = Observer()
self.directory = directory
self.pattern = pattern
def run(self):
event_handler = Handler(self.pattern)
self.observer.daemon=True
self.observer.schedule(event_handler, path=self.directory, recursive=False)
self.observer.start()
log.info("Watcher started...")
log.info("Checking for existing files...")
for file in os.listdir(self.directory):
filename = os.path.join(self.directory, file)
if os.path.isfile(filename) and "hash" not in filename:
event = FileCreatedEvent(filename)
event.event_type = "created"
print(event)
#prints:
self.observer.event_queue.put((event, self.observer))
try:
while True:
time.sleep(2)
except KeyboardInterrupt:
self.observer.stop()
log.info("Watcher stopped")
observer.join()
< /code>
Ich habe versucht, dies in meinem Code zu implementieren, und alles funktioniert bis zu dieser Zeile: < /p>
self.observer.event_queue.put((event, self.observer))
Ich habe auch Folgendes ausprobiert:
Code: Select all
event_handler.dispatch(event)
Update:
Es scheint das Ereignis zu erstellen, aber dann weiß ich nicht, wie man das Ereignis tatsächlich auslöst oder feuert. Vielen Dank im Voraus für jede Hilfe < /p>
Für jeden, der danach suchte, hatte ich einen nicht verwandten Codeblock, der eine der Methoden verhinderte, die ich von der Arbeit versuchte. Dies ist die Lösung: < /p>
Code: Select all
event_handler.on_created(event)