2009-08-26 29 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