Hola usuario de nuestro sitio web, encontramos la respuesta a lo que buscabas, deslízate y la encontrarás más abajo.
Solución:
Necesita subclasificar y hacer lo que quiera en el despacho:
import sys
import time
import logging
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
class Event(LoggingEventHandler):
def dispatch(self, event):
print("Foobar")
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
path = sys.argv[1] if len(sys.argv) > 1 else '.'
event_handler = Event()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
Si ejecutas el código verás Foobar
se emite cada vez que se detecta un cambio, para ignorar los archivos que puede necesitar usar [events.PatternMatchingEventHandler][1]. Hay varios métodos en cada
Para hacer algo cuando se modifica un caso, podemos anular on_modified
:
class Event(LoggingEventHandler):
def on_modified(self, event):
print("Doh")
Y ejecutando el código usando la clase anterior con event_handler = Event()
y cambiar un archivo generará algo como:
Doh
Doh
Doh
Doh
Doh
Doh
Doh
2015-10-03 15:33:55 - Created file: ./test.txt___jb_bak___
2015-10-03 15:33:55 - Moved file: from ./test.txt to ./test.txt___jb_old___
2015-10-03 15:33:55 - Moved file: from ./test.txt___jb_bak___ to ./test.txt
2015-10-03 15:33:55 - Deleted file: ./test.txt___jb_old___
Doh
[1]: http://pythonhosted.org/watchdog/api.html#watchdog.events.PatternMatchingEventHandler EventHandler
clase que puede anular, todo depende de lo que quiera hacer. El LoggingEventHandler
la clase en sí es una subclase de watchdog.events.FileSystemEventHandler
:
clase watchdog.events.FileSystemEventHandler
Bases: objeto
Base file system event handler that you can override methods from.
despacho (evento)
Envía eventos a los métodos apropiados.
Parameters: event (FileSystemEvent) – The event object representing the file system event.
en_cualquier_evento(evento)
Controlador de eventos catch-all.
Parameters: event (FileSystemEvent) – The event object representing the file system event.
on_created(evento)
Se llama cuando se crea un archivo o directorio.
Parameters: event (DirCreatedEvent or FileCreatedEvent) – Event representing file/directory creation.
on_deleted(evento)
Se llama cuando se elimina un archivo o directorio.
Parameters: event (DirDeletedEvent or FileDeletedEvent) – Event representing file/directory deletion.
on_modified(evento)
Se llama cuando se modifica un archivo o directorio.
Parameters: event (DirModifiedEvent or FileModifiedEvent) – Event representing file/directory modification.
on_moved(evento)
Se llama cuando se mueve o se cambia el nombre de un archivo o un directorio.
Parameters: event (DirMovedEvent or FileMovedEvent) – Event representing file/directory movement.
Sección de Reseñas y Valoraciones
Nos puedes añadir valor a nuestra información aportando tu experiencia en las explicaciones.