2017-05-18 7 views
0

L'événement déclencheur du chien de garde lors de la création du fichier dépend-il de quelque chose de spécifique à la façon dont les fichiers sont créés? Je trouve un décalage entre quand les fichiers sont enregistrés dans un répertoire par un programme externe et quand ils sont copiés dans le répertoire. J'utilise watchdog pour surveiller un répertoire, déclencher de nouveaux fichiers créés dans ce répertoire, puis il exécute un tas d'autres scripts pour ces fichiers. Cependant, j'ai un problème étrange. Je surveille un répertoire dans lequel de nouveaux fichiers sont enregistrés dans un programme externe au fil du temps. Watchdog ne se déclenche pas lorsque ces fichiers apparaissent dans le répertoire. Cependant, j'exécute une instance distincte du programme qui surveille un deuxième répertoire, et quand je copie les fichiers dans ce répertoire, watchdog se déclenche comme prévu et exécute le code. Je l'exécute sur une machine Linux.Python Watchdog Problème Ne pas déclencher d'événements pour les fichiers enregistrés par un logiciel externe

Des idées?

Merci.

+0

Quelle version de 'watchdog'? Y a-t-il une différence entre les permissions 'file', extern et locales? – stovfl

Répondre

1

Oui, c'est le cas. Vérifiez comment le programme externe crée le fichier. Dans mon cas, le programme externe créait un fichier avec le nom de fichier initié avec un '.' et se terminant par '.tmp' et quand il a fini d'écrire dans le fichier temporaire, il le déplaçait vers le nom de fichier réel qui se termine par '.json' (pour lequel j'ai mis en place l'observateur). Seul l'événement on_moved est déclenché dans ce cas.

Le remplacement du gestionnaire on_moved résoudra le problème ici.