Watchdog - Erstellen Sie Ereignisse für vorhandene Dateien beim StartenPython

Python-Programme
Anonymous
 Watchdog - Erstellen Sie Ereignisse für vorhandene Dateien beim Starten

Post by Anonymous »

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>

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)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post