J'essaie d'écouter les changements du système de fichiers en utilisant le module watchdog de Python. Je veux surveiller les fichiers de deux répertoires différents. Pour une seule montre de dossier, j'ai utilisé PatternMatchingEventHandler
de watchdog.events
. Je veux utiliser la même chose pour plusieurs répertoires.Python chien de garde pour les fichiers de deux répertoires différents
Code:
import time
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler
class EventHandler(PatternMatchingEventHandler):
def on_modified(self, event):
super(EventHandler, self).on_modified(event)
print event
if __name__ == "__main__":
dir_name = ["/home/user1/first", "/home/user1/second"]
observer = Observer()
patterns = ["/home/user1/first/first.log","/home/user1/second/second.log")]
for i in xrange(len(dir_name)):
event_handler = EventHandler(patterns = patterns[i])
observer.schedule(event_handler, dir_name[i], recursive=True)
observer.start()
try:
while True:
time.sleep(0.1)
except KeyboardInterrupt:
observer.stop()
Dans le code ci-dessus, j'ai essayé de faire répertoire plusieurs formats d'observation et de créer un gestionnaire d'événements pour chacun des fichiers. Ça ne fonctionne pas pour moi. Y a-t-il quelque chose qui me manque ici? Quel est le moyen de le faire?
Merci.
Il ne fonctionne pas avec cela. Comment cela va-t-il aider? – wonder
De ce que je sais, bloque le thread à partir de laquelle est appelé le code, de sorte que le programme s'exécute indéfiniment jusqu'à ce qu'il se termine (par un Ctrl-C dans ce cas). Plus d'infos [ici] (http://pythonhosted.org/watchdog/api.html#watchdog.utils.BaseThread.join). Notez qu'il regarde comme un écran noir: faites quelques changements pour voir si le programme fonctionne (il sera sorti). – RompePC
C'est correct. Mais ce n'est pas du tout d'imprimer quoi que ce soit même si les fichiers sont régulièrement modifiés dans les deux répertoires. J'ai essayé de faire 'join()' pour tous les planificateurs d'observateurs. Mais ça ne m'aide pas. – wonder