使用 python 检测新的或修改的文件

发布于 2024-08-08 15:35:12 字数 225 浏览 6 评论 0原文

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

我尝试寻找一个可以执行此操作的脚本(最好是在 python 或 bash 中),但没有找到。我的环境是使用 Python 2.6 的 Linux

相关问题

I'm trying to detect when a new file is created a directory or when an existing file is modified in a directory.

I tried searching for a script that would do this (preferably in python or bash) but came up short. My environment is linux with Python 2.6

Related Question

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

妄想挽回 2024-08-15 15:35:12

您可以使用 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 可能是一个更好的解决方案,尽管可移植性较差。

You can use gio which is the Filesystem part of GLib (In GLib's python bindings)

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)

however, your program must be running a GLib mainloop for the events to arrive. One quick way to test that is by using:

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

GLib is a high-level library which is well suited for Applications. You don't have to care about which underlying system it uses for the file monitoring.


I now see you use Fedora Core 2. Really version 2? That might be too old to use GIO in GLib. Pyinotify that has been mentioned might be a better solution, although less portable.

执手闯天涯 2024-08-15 15:35:12

如果您使用的是 Linux,您可以尝试 pyinotify,它的作用类似于inotify(7) 系统的面向对象包装器来电。该项目网站包含非常简单的教程和示例。

If you're using Linux, you may try pyinotify that acts like an object-oriented wrapper around the inotify(7) system calls. The project website contains quite straightforward tutorials and examples.

旧伤慢歌 2024-08-15 15:35:12

如果您可以使用 PyQt,那么 QFileSystemWatcher 就可以做到这一点。

If you can use PyQt, there's QFileSystemWatcher that does just this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文