57 votes

Surveillance de fichiers / répertoires avec python

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?

85voto

GoraKhargosh Points 571

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.

32voto

Brian R. Bondy Points 141769

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.

2voto

reese.ch Points 69

Consultez également cette option:

http://pypi.python.org/pypi/watchdog

A été utilisé avec une application multiplate-forme sous Windows et OS X.

2voto

batbrat Points 3481

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).

0voto

JesperE Points 34356

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.

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