2010-07-15 8 views
1

J'essaie de regarder un répertoire et je recherche des modifications de fichiers. Penser à utiliser pyinotify. Le problème est que tout en utilisant l'événement IN_MODIFY pour vérifier un changement de fichier, il déclenche un certain nombre d'événements si je copie même un petit fichier de 12 Mo par exemple sur le réseau.pyinotify: Gestion des déclencheurs IN_MODIFY

Je ne veux pas gérer autant de déclencheurs. Je veux seulement déclencher un seul événement, après que le fichier est copié. Comment puis-je y parvenir?

Tous les gourous Pyinotify peuvent aider

+0

Vous devriez vérifier [cette question pyinotify] (https://github.com/seb-m/pyinotify/issues/45). Les événements IN_MODIFY sont fortement influencés par la façon dont les modifications sont écrites dans un fichier (par exemple, 'nano' déclenche 2 événements IN_MODIFY alors que' sublime-text' n'en tire aucun) –

Répondre

2

Essayez de changer IN_MODIFY à IN_CLOSE_WRITE. Un événement IN_CLOSE_WRITE se produit lorsqu'un fichier accessible en écriture est fermé. Cela ne devrait se produire qu'une seule fois, à moins que le programme qui copie le fichier choisisse de fermer le fichier plusieurs fois.

La modification ci-dessus est probablement tout ce dont vous avez besoin, mais sinon, this basic code peut être un outil très utile pour voir quels événements se produisent quand. Avec lui, vous devriez être en mesure de déterminer quel événement utiliser.


# Example: loops monitoring events forever. 
# 
import pyinotify 

# Instanciate a new WatchManager (will be used to store watches). 
wm = pyinotify.WatchManager() 
# Associate this WatchManager with a Notifier (will be used to report and 
# process events). 
notifier = pyinotify.Notifier(wm) 
# Add a new watch on /tmp for ALL_EVENTS. 
wm.add_watch('/tmp', pyinotify.ALL_EVENTS) 
# Loop forever and handle events. 
notifier.loop() 
+0

Le lien donné ne fonctionne plus – Ajoy

+0

@Ajoy: Merci pour la notification. Le lien a été corrigé et le code dupliqué ci-dessus. – unutbu