【问题标题】:detect new or modified files with python [duplicate]用python检测新的或修改过的文件[重复]
【发布时间】:2010-12-09 18:49:18
【问题描述】:

我正在尝试检测何时在目录中创建新文件或何时在目录中修改现有文件。

我尝试搜索可以执行此操作的脚本(最好在 python 或 bash 中),但没有找到。我的环境是 linux 和 Python 2.6

Related Question

【问题讨论】:

  • 您使用哪种操作系统?
  • Linux 与 Python 2.6。正如刚才提到的。具体来说,Fedora Core 2。谢谢。
  • @Jake:不要评论你自己的问题。请用新的事实更新您的问题并删除您的评论。
  • 他评论了一条评论,而不是他的问题……然后更新?为什么,它都在那里(除了 Fedora 位,但为什么会很重要......)。

标签: python linux file filesystems


【解决方案1】:

您可以使用gio,它是 GLib 的文件系统部分(在 GLib 的 python 绑定中)

import gio

def directory_changed(monitor, file1, file2, evt_type):
   if (evt_type in (gio.FILE_MONITOR_EVENT_CREATED,
       gio.FILE_MONITOR_EVENT_DELETED)):
       print "Changed:", file1, file2, evt_type

gfile = gio.File(".")
monitor = gfile.monitor_directory(gio.FILE_MONITOR_NONE, None)
monitor.connect("changed", directory_changed)

但是,您的程序必须运行 GLib 主循环才能使事件到达。一种快速测试方法是使用:

import glib
ml = glib.MainLoop()
ml.run()

GLib 是一个非常适合应用程序的高级库。您不必关心它用于文件监控的底层系统。


我现在看到您使用 Fedora Core 2。真的是版本 2?在 GLib 中使用 GIO 可能太旧了。已经提到的 Pyinotify 可能是一个更好的解决方案,尽管便携性较差。

【讨论】:

  • 太像 GNOME 了!我不喜欢这样,这只是一个不必要的依赖。
  • Andrey:它只是 GLib。您是否安装了它(如果您使用的是 Linux)?
  • @kaizer.se 我是 Linux 极简主义者,我使用 wmii 作为窗口管理器,不喜欢各种 GNOME 的东西。 (但实际上是的,我安装了glib,因为udevavahimc,...;)
  • @Andrey:你可能是对的,因为 GLib 太大了。这是一个方便的界面,但有很多东西。
【解决方案2】:

如果您使用的是 Linux,您可以尝试使用 pyinotify,它就像一个围绕 inotify(7) 系统调用的面向对象的包装器。该项目网站包含非常简单的教程和示例。

【讨论】:

  • +1,另一个有趣的解决方案
【解决方案3】:

如果你可以使用 PyQt,QFileSystemWatcher 可以做到这一点。

【讨论】:

    【解决方案4】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      • 2015-11-26
      • 2011-11-15
      相关资源
      最近更新 更多