3 votes

Comment faire correspondre uniquement des événements particuliers avec Python watchdog

J'ai l'intention d'utiliser Python watchdog pour gérer un répertoire dans lequel des fichiers sont écrits, et je ne m'intéresse qu'aux fichiers images, le problème c'est que je ne comprends pas bien le code à cette page . Voici ma tentative :

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

class Beat(PatternMatchingEventHandler):
     def on_create(self,event):
             print event.src_path

if __name__ == "__main__":
    patt = ['\w+[.]jpeg']
    event_handler = Beat(patterns=patt,ignore_directories=True,) 
    observer = Observer()
    path = "./"
    observer.schedule(event_handler, path, recursive=True)
    observer.start()

J'essaie d'utiliser la classe de recherche de motifs, mais je n'obtiens rien. Comment est-elle censée être utilisée ?

2voto

1_CR Points 11848

Sur la base de la code source , fnmatch est utilisé sous le capot. fnmatch ne peut faire que de la recherche de motifs de type globaux UNIX. Ce qui signifie que vous aurez peut-être plus de chance avec *.jpg que \w+[.]jpeg

2voto

Ahmad Yoosofan Points 21

Vous pouvez en fait utiliser le RegexMatchingEventHandler au lieu du PatternMatchingEventHandler pour accomplir exactement ce que vous voulez faire :

from watchdog.observers import Observer
from watchdog.events import RegexMatchingEventHandler  

class ExampleHandler(RegexMatchingEventHandler):
     def on_create(self, event):
             print(event.src_path)

if __name__ == "__main__":
    pattern = '\w+\.jpeg'
    event_handler = ExampleHandler(regexes=[pattern], ignore_directories=True) 
    observer = Observer()
    path = "./"
    observer.schedule(event_handler, path, recursive=True)
    observer.start()
    import time
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()

    observer.join()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X