2009-08-26 7 views
0

Versuchen Sie herauszufinden, ob es gute Module gibt, die eine ständige Überwachung eines Verzeichnisses erlauben, und sobald eine neue Datei da ist, werden eine Reihe von Funktionen gestartet?Beliebige Bibliotheken/Module für die Dateiverwaltung in Python?

Auch bei teilweise über FTP übertragenen Dateien sollten keine Aktionen ausgeführt werden.

+0

Möglicherweise ist ein Duplikat http://stackoverflow.com/questions/597903/monitoring-files-directories-with-python –

Antwort

0

Sie suchen nach Dateisystem-Ereignismodulen.

Welches Betriebssystem laufen Sie?

(Disclaimer: Ich bin die Aufrechterhaltung diese beiden Module)

Für andere Alternativen, können Sie einen Blick auf pyinotify oder gamin haben, aber ich habe nie versucht, diese Module.

+0

Betriebssystem ist Linux/Unix, jedoch sollte es in der Lage sein, mit Unix zu arbeiten – ismail

+0

Generika "Unix" hat keine solche Funktionalität; bestimmte Unix-Versionen tun dies oft, aber Sie müssen angeben, welche Versionen (Solaris, HPUX,? BSD, AIX, ...) und mit einigen Sie möglicherweise Pech haben. –

+0

Höchstwahrscheinlich HPUX – ismail

0

Zusätzlich zu den ausgezeichneten Modulen von NicDumZ können Sie auch pyinotify für eine reichhaltige (und reich dokumentierte) Alternative in Betracht ziehen. Ich denke, Nic ist einfacher (zumindest für grundlegende Funktionalität), aber ich habe es nicht im Detail studiert - ich bin eher mit Pyinotify vertraut. Übrigens, letzteres ist in reinem Python (mit ctypes natürlich ;-).

Da Sie erwähnt haben, "sollte mit Unix arbeiten können", sollten Sie genau angeben, welche Unix-Versionen Sie unterstützen und untersuchen müssen, ob sie ähnliche Funktionalität bieten (und wenn ja, über welche Schnittstelle). Zum Beispiel lautet diese man page für inotify:

Die Inotify-API ist Linux-spezifisch. Einige andere Systeme stellen ähnliche Mechanismen bereit, z. B. FreeBSD hat kqueue und Solaris hat/dev/poll.

und Nic bereits FSEvents auf MacOSX erwähnt. Sobald Sie die C-Methode für ein bestimmtes System von Interesse festgelegt haben, im schlimmsten Fall, wenn es keine vorgefertigte Python-Version gibt, können Sie wahrscheinlich ctypes ähnlich wie pyinotify für inotify verwenden. BTW, der Vollständigkeit halber: unter Windows könnten Sie ReadDirectoryChangesW verwenden (normalerweise würden Sie das entweder über ctypes oder die Datei win32file der Win32-Erweiterungen tun).

0

High-Level-Bibliotheken implementieren oft unterschiedliche Lösungen für jede Plattform, an der sie arbeiten. Mit etwas Glück müssen Sie nur eine Methode verwenden - die High-Level-Bibliothek.

Siehe this non-python Question about file monitoring

Insbesondere wenn Sie QT die QFileSystemwatcher mit Python-Anbindung verwenden oder GLib des GFileMonitor (was ich in meiner Anwendung verwenden, obwohl es nur für Linux ist), könnten Sie Arbeit sparen.

+0

Ich graben in den Dateisystemcode von glib (genannt "gio", auch als Python-Modul "gio", wenn Teil von pygobject), und es hat Implementierungen für inotify und win32, und "fam" was ist ein Polling Fallback http://git.gnome.org/cgit/glib/tree/gio – u0b34a0f6ae

Verwandte Themen