Estoy tratando de detectar cuándo se crea un archivo con un nombre dado en un directorio. Lo estoy haciendo gracias al watchdog. La creación se detecta correctamente, pero no sé cómo finalizar la aplicación correctamente una vez que se realiza la detección.Detectar la creación de archivos con watchdog
Mi pieza de código es el siguiente:
#!/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))
Soy nuevo en Python y no puedo entender lo que está mal. La detección parece estar programada en un subproceso dedicado y el método join() está esperando a que este subproceso finalice. Por lo tanto, supongo que no estoy llamando al método correcto sobre el observador para que deje de esperar/bucles, pero la documentación del perro guardián parece no ser clara para indicar cuáles son los métodos que se pueden usar.
¿Alguien tiene una idea de cómo puedo lograr mi objetivo?
Gracias por publicar esta actualización – jgyou