【问题标题】:Any libraries/modules for file management in python? [closed]python中用于文件管理的任何库/模块? [关闭]
【发布时间】:2009-08-26 07:40:05
【问题描述】:

试图找出是否有任何好的模块可以持续监控目录,并且一旦有新文件,就会启动许多功能?

也不应对通过 FTP 传入的部分传输文件执行操作。

【问题讨论】:

标签: python


【解决方案1】:

我正在实现一个名为 watchdog 的跨平台库,它 可能是您正在寻找的东西。可在 http://github.com/gorakhargosh/watchdog

HTH。 =)

【讨论】:

    【解决方案2】:

    您正在寻找文件系统事件模块。

    您正在运行哪个操作系统?

    (免责声明:我正在维护这两个模块)

    对于其他替代方案,您可以查看pyinotifygamin,但我从未尝试过这些模块。

    【讨论】:

    • 操作系统是Linux/Unix,但是应该可以在unix下工作
    • 通用“unix”没有这样的功能;特定的 Unix 版本通常会这样做,但您必须指定哪些版本(Solaris、HPUX、?BSD、AIX 等),而有些版本可能会让您不走运。
    【解决方案3】:

    除了 NicDumZ 的优秀模块之外,您可能还需要考虑 pyinotify 以获得丰富(且文档丰富)的替代方案。我认为 Nic 的更简单(至少对于基本功能而言),但我没有详细研究它——我对 pyinotify 更熟悉。顺便说一句,有趣的是,后者是用纯 Python 编写的(当然是 ctypes;-)。

    既然您确实提到了“应该能够与 unix 一起工作”,您应该准确指定您需要支持哪些 unix 版本,并研究它们是否提供类似的功能(如果可以,通过什么接口)。例如,这个 inotify 的 man page 说:

    inotify API 是特定于 Linux 的。其他一些系统提供 类似的机制,例如,FreeBSD 有 kqueue,Solaris 有 /dev/poll。

    Nic 已经提到了 MacOSX 上的 FSEvents。一旦确定了在感兴趣的给定系统上执行此操作的 C 方法,最坏的情况是,如果没有预制的 Python 版本,您可能可以使用ctypes,类似于 pyinotify 对 inotify 所做的方式。顺便说一句,为了完整起见:在 Windows 上,您可以使用 ReadDirectoryChangesW(通常您可以通过 ctypes 或 Win32 扩展的 win32file 文件来执行此操作)。

    【讨论】:

      【解决方案4】:

      高级库通常为它们所使用的每个平台实施不同的解决方案。运气好的话,您只需要使用一种方法——高级库。

      this non-python Question about file monitoring

      具体来说,如果您可以将 QT 的 QFileSystemwatcher 与 python 绑定一起使用,或者 GLib 的 GFileMonitor(我在我的应用程序中使用它,尽管它只是用于 Linux),您可能会节省工作。

      【讨论】:

      • 我正在研究 glib 的文件系统代码(称为“gio”,当它是 pygobject 的一部分时也称为 python 模块“gio”),它具有 inotify 和 win32 以及“fam”的实现" 这是一个投票后备 git.gnome.org/cgit/glib/tree/gio
      猜你喜欢
      • 2019-05-17
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 2012-08-14
      相关资源
      最近更新 更多