2009-08-26 54 views
0

試圖找出是否有任何允許對目錄進行持續監控的好模塊,並且一旦有新文件出現,就會引入許多功能?python中用於文件管理的任何庫/模塊?

此外,不應對部分傳輸的文件通過FTP進行操作。

+0

可能http://stackoverflow.com/questions/597903/monitoring-files-directories-with-python – 2009-08-26 07:48:54

回答

0

您正在尋找文件系統事件模塊。

你正在運行哪個操作系統?

(免責聲明:我保持這兩個模塊)

對於其他的替代品,你可以看看pyinotifygamin,但我從來沒有嘗試過這些模塊。

+0

操作系統的副本是的Linux/Unix,但它應該能夠與UNIX – ismail 2009-08-26 11:08:45

+0

通用工作「unix」沒有這樣的功能;特定的Unix版本通常會這樣做,但是您必須指定哪些版本(Solaris,HPUX,?BSD,AIX,...)以及某些您可能不走運的版本。 – 2009-08-26 14:53:09

+0

最有可能的HPUX – ismail 2009-08-26 20:05:29

0

除了NicDumZ的優秀模塊之外,您可能還想考慮pyinotify以獲得豐富(且豐富記錄)的備選方案。我認爲Nic's更簡單(至少對於基本功能而言),但我沒有詳細研究它 - 我更熟悉pyinotify。順便說一句,有趣的是,後者是純Python(當然有​​;-)。

既然您提到「應該能夠使用unix」,您應該明確指出您需要支持哪些unix版本,並研究它們是否提供類似的功能(以及是否通過什麼接口)。例如,inotify的man page表示:

inotify API是Linux專用的。一些其他系統提供了類似的機制,例如FreeBSD具有kqueue,Solaris具有/ dev/poll。

和Nic已經在MacOSX上提到了FSEvents。一旦你確定了在給定的系統上執行它的C方式,最糟糕的情況是,如果沒有預先製作的Python版本,你可以使用​​類似pyinotify用於inotify的方式。順便說一句,爲了完整性:在Windows上,你可以使用ReadDirectoryChangesW(通常你可以通過ctypes或Win32擴展的win32file文件來實現)。

0

高級圖書館通常爲他們工作的每個平臺實施不同的解決方案。幸運的是,你只需要使用一種方法 - 高級庫。

this non-python Question about file monitoring

特別是,如果你可以使用QT的QFileSystemwatcher與Python綁定,或GLib庫的GFileMonitor(我在我的應用程序中使用,雖然它只是爲Linux),你可能會節省工作。

+0

我正在挖掘glib的文件系統代碼(當pygobject的一部分被稱爲「gio」,也被稱爲python模塊「gio」),並且它已經實現inotify和win32的實現,而「fam」是投票回退http://git.gnome.org/cgit/glib/tree/gio – u0b34a0f6ae 2009-08-26 20:01:04