web-dev-qa-db-fra.com

Surveillance du contenu des fichiers / répertoires?

Je suis à la recherche d'une surveillance de fichiers multiplateforme python? Je sais qu'il est possible de surveiller des fichiers sur Windows à l'aide de pywin32, et il existe des paquets fonctionnant sous Linux/Unix, mais quelqu'un sait-il une plateforme multiplateforme?

55
dahpgjgamgan

Pour les systèmes basés sur Unix/Linux, vous devez utiliser File Alteration Monitor Python to libfam .

Pour les systèmes basés sur Windows, vous devez lier l'API Win32 FindFirstChangeNotification et les fonctions associées.

En ce qui concerne un moyen multiplateforme, je ne connais pas un bon moyen multiplateforme. Je pense qu'il serait préférable de construire vous-même un module qui fonctionne sur l'un ou l'autre des systèmes d'exploitation qui utilise l'une des 2 méthodes ci-dessus après avoir détecté de quel système il s'agit.

32
Brian R. Bondy

Je travaille sur une bibliothèque sous licence MIT qui aide les programmes Python à surveiller les événements du système de fichiers aussi facilement que possible. Il y a des différences que j'essaie de résoudre. Version fortement alpha en ce moment :

Découvrez-le ici: http://github.com/gorakhargosh/watchdog/

Les correctifs et contributions sont les bienvenus.

J'espère que ça aide. =) Bravo.

85
GoraKhargosh

Découvrez également cette option:

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

A été utilisé avec une application multiplateforme sur Windows et OS X.

4
reese.ch

J'ai trouvé ce lien, qui parle de votre problème. Bien qu'il ne fournisse pas vraiment de solution/bibliothèque, je pense que cela aidera. http://www.stepthreeprofit.com/2008/06/cross-platform-monitoring-of-filesystem.html

Je ne pense pas qu'il y ait encore de plateforme multiplateforme, alors vous voudrez peut-être lancer la vôtre.

Je suis inexpérimenté dans ce domaine donc je ne suis pas vraiment sûr. J'espère que ça aide.

Remarque
Je me corrige, gamin est disponible sur cygwin comme Adam Bernier me l'a fait remarquer dans un commentaire. Vous voudrez peut-être rechercher d'autres options sur cygwin (si elles existent).

2
batbrat

La manière la plus simple sous Linux est d'utiliser inotifywait (étant donné que votre noyau est assez récent). Vous n'avez pas besoin de liaisons spéciales, inotifywait peut être personnalisé pour imprimer les lignes de sortie sur la sortie standard comme vous le souhaitez. Regardez et cette question pour un bon exemple.

0
JesperE