Watchdog - Erstellen Sie Ereignisse für vorhandene Dateien beim Starten
Posted: 04 Mar 2025, 00:15
Ich muss filecreatedEvents für Dateien erstellen, die im Verzeichnis vorhanden sind, wenn meine Watchdog -App startet. Ich habe mir ein paar Dinge online angesehen, um sie zu erreichen, aber keiner von ihnen funktioniert mit meinem aktuellen Ansatz: < /p>
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>
Ich habe auch Folgendes ausprobiert:
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>
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)