ruta operaciones navegar manejo gestion directorios directorio crear copiar con carpetas buscar archivos archivo python multithreading exit-code termination watchdog

navegar - operaciones con archivos python



Detectar la creación de archivos con watchdog. (1)

Finalmente, después de echar un vistazo a la implementación de watchdog, no es necesario llamar a unschedule_all antes de stop , esto se hace automáticamente. Al eliminar la línea que contiene esta llamada al método, se soluciona el problema y la aplicación se ejecuta perfectamente.

Estoy tratando de detectar cuando un archivo con un nombre dado se crea en un directorio. Lo estoy haciendo gracias al watchdog . La creación se detecta correctamente, pero no sé cómo terminar la aplicación correctamente una vez que se realiza la detección.

Mi pieza de código es la 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 qué está mal. La detección parece estar programada en un subproceso dedicado y el método join () está esperando a que termine este subproceso. Por lo tanto, supongo que no estoy llamando al método correcto en el observador para que deje de esperar / en bucle, pero la documentación del perro guardián parece no ser clara para señalar cuáles son los métodos que pueden usarse.

¿Alguien tiene una idea de cómo puedo lograr mi objetivo?