Menu / Python / Librerías / WatchDog / Módulo watchdog.observers / Clase watchdog.observers.Observer

Clase observer - WatchDog

La clase Observer es una clase que representa el motor de la librería watchdog.

Es una clase que para utilizarla, se debe configurar y a continuación ejecutarla tal y como se haría con un hilo o 'thread'.

Éste hilo lo que hace es observar el árbol de directorios indicado y ejecuta llamadas al manejador de eventos.

Sintaxis (Creación de instancia):

mi_observador = Observer ()

Posteriormente se deben definir 4 funciones que serán añadidas al objeto para que pueda funcionar de manera adecuada, asignando métodos de Observer a funciones de nuestro programa.

Las funciones se deben declarar y definir anteriormente a gusto del programador. Los manejadores de eventos se crean con el módulo watchdog.events.

# Asignamos funciones a eventos
manejador_de_eventos.on_created = mi_funcion_on_created
manejador_de_eventos.on_deleted = mi_funcion_on_deleted
manejador_de_eventos.on_modified = mi_funcion_on_modified
manejador_de_eventos.on_moved = mi_funcion_on_moved

Métodos y propiedades de Observer - WatchDog

Uso de Observer - WatchDog

Uso de Observer, como se ha mencionado anteriormente, se controla como un hilo o "thread".

import time
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler

# Configuraciones ...
# Funciones ...
def mi_funcion_on_created (event):
    pass

def mi_funcion_on_deleted (event):
    pass

def mi_funcion_on_modified (event):
    pass

def mi_funcion_on_moved (event):
    pass

# Croquetas ...

# Variables
patrones = '*'
patrones_a_ignorar = ''
ignorar_directorios = False
sensible_al_caso = True
manejador_de_eventos = PatternMatchingEventHandler (patrones, patrones_a_ignorar, ignorar_directorios, sensible_al_caso)

# Asignamos funciones a eventos
manejador_de_eventos.on_created = mi_funcion_on_created
manejador_de_eventos.on_deleted = mi_funcion_on_deleted
manejador_de_eventos.on_modified = mi_funcion_on_modified
manejador_de_eventos.on_moved = mi_funcion_on_moved

# Crear el Observador
ruta = './carpeta'
# Crear objeto Observer
mi_observador = Observer ()
# Llamar al método schedule ()
mi_observador.schedule (manejador_de_eventos, ruta, True)

# Iniciamos el hilo "thread" del objeto
mi_observador.start ()

try:
    while True:
        time.sleep (1)

except Exception as e:
    mi_observador.stop ()
    mi_observador.join ()
    sys.exit (0)