Je suis à la recherche d'un package python de surveillance de fichiers multiplate-forme? Je sais qu'il est possible de surveiller des fichiers sur Windows sous Pywin32, et qu'il existe des paquets fonctionnant sous Linux / Unix, mais est-ce que quelqu'un est au courant d'un multi-plateforme?
Réponses
Trop de publicités?Je travaille sur une bibliothèque sous licence MIT qui aide les programmes Python à surveiller les événements du système de fichiers de manière aussi portable que possible. Il y a des différences que j'essaie de résoudre. Version hautement alpha pour le moment:
Découvrez-le ici: http://github.com/gorakhargosh/watchdog/
Les patchs et les contributions sont les bienvenus.
J'espère que ça aide. =) Salut.
Pour Unix/systèmes basés sur Linux, vous devez utiliser File Alteration Monitor liaisons Python pour libfam.
Pour les systèmes sous Windows, vous devez lier dans l'API Win32 FindFirstChangeNotification
et les fonctions associées.
Comme pour une plate-forme de façon, je ne sais pas au sujet d'un bon de la croix-plate-forme de façon. Je pense qu'il serait préférable de construire un module vous-même qui fonctionne sur l'OS qui utilise l'une des 2 méthodes ci-dessus, après la détection de quel OS il est.
Consultez également cette option:
http://pypi.python.org/pypi/watchdog
A été utilisé avec une application multiplate-forme sous Windows et OS X.
J'ai trouvé ce lien qui parle de votre problème. Bien qu'il n'a pas vraiment fournir de solution s/bibliothèque, je pense que ça va aider. http://www.stepthreeprofit.com/2008/06/cross-platform-monitoring-of-filesystem.html
Je ne pense pas qu'il y est une croix-plateforme encore, de sorte que vous pouvez rouler votre propre.
Je n'ai pas d'expérience dans ce domaine donc je ne suis pas vraiment sûr. J'espère que cette aide.
Note
Je corrige la position des mains, gamin est disponible sur cygwin comme Adam Bernier me l'a fait remarquer dans un commentaire. Vous souhaitez peut-être à la recherche d'autres options sur cygwin (si elles existent).
Le moyen le plus simple sous Linux consiste à utiliser inotifywait (étant donné que votre noyau est suffisamment récent). Vous n'avez pas besoin de liaisons spéciales, vous pouvez personnaliser inotifywait pour imprimer les lignes de sortie sur une sortie standard comme vous le souhaitez. Regardez et cette question pour un bon exemple.