2009-08-26 8 views
0

Essayer de savoir s'il y a de bons modules qui permettent une surveillance constante d'un répertoire et dès qu'un nouveau fichier est là, un certain nombre de fonctions sont lancées?Des bibliothèques/modules pour la gestion de fichiers en python?

Les actions ne doivent pas non plus être effectuées sur des fichiers partiellement transférés via FTP.

+0

Peut-être un double de http://stackoverflow.com/questions/597903/monitoring-files-directories-with-python –

Répondre

0

Vous recherchez des modules d'événements de système de fichiers.

Quel système d'exploitation utilisez-vous?

(disclaimer: Je maintiens ces deux modules)

Pour d'autres alternatives, vous pouvez jeter un oeil à pyinotify ou gamin, mais je n'ai jamais essayé ces modules.

+0

système d'exploitation Linux/Unix, mais il devrait être en mesure de travailler avec unix – ismail

+0

Générique "Unix" n'a pas de telles fonctionnalités; Des versions spécifiques d'Unix le font souvent, mais vous devez spécifier quelles versions (Solaris, HPUX,? BSD, AIX, ...) et avec certains vous pourriez ne pas avoir de chance. –

+0

Probablement HPUX – ismail

0

En plus des excellents modules de NicDumZ, vous pouvez considérer pyinotify pour une alternative riche (et richement documentée). Je pense que Nic's est plus simple (au moins pour les fonctionnalités de base), mais je ne l'ai pas étudié en détail - je suis plus familier avec pyinotify. BTW, intéressant, ce dernier est en pur Python (avec ctypes bien sûr ;-). Puisque vous avez mentionné "devrait être capable de travailler avec unix", vous devez spécifier exactement quelles versions unix vous devez prendre en charge et étudier si elles offrent des fonctionnalités similaires (et si oui via quelle interface). Par exemple, ce man page pour inotify dit:

L'API inotify est spécifique à Linux. Certains autres systèmes fournissent des mécanismes similaires, par exemple, FreeBSD a kqueue, et Solaris a/dev/poll. Et

et Nic déjà mentionné FSEvents sur MacOSX. Une fois que vous avez déterminé la manière C de le faire sur un système donné, dans le pire des cas, s'il n'y a pas de version Python pré-établie, vous pouvez probablement utiliser ctypes de la même façon que pyinotify pour inotify. BTW, par souci d'exhaustivité: sur Windows, vous pouvez utiliser ReadDirectoryChangesW (typiquement, vous le feriez soit via ctypes ou le fichier win32file des extensions Win32).

0

Les bibliothèques de haut niveau implémentent souvent des solutions différentes pour chaque plate-forme sur laquelle elles travaillent. Avec de la chance, il suffit d'utiliser une méthode: la bibliothèque de haut niveau.

Voir this non-python Question about file monitoring

Plus précisément, si vous pouvez utiliser QFileSystemwatcher QT avec des liaisons python ou GFileMonitor (que j'utilise dans mon application, bien que ce soit juste pour Linux) de GLib, vous pourriez épargner du travail.

+0

Je creuse dans le code du système de fichiers de glib (appelé "gio", aussi comme module python "gio" quand une partie de pygobject), et il a des implémentations en place pour inotify et win32, et "fam" qui est une interrogation de remplacement http://git.gnome.org/cgit/glib/tree/gio – u0b34a0f6ae

Questions connexes