开发者

detect new or modified files with python [duplicate]

This question already has answers here: 开发者_开发知识库 How do I watch a file for changes? (28 answers) Closed 5 years ago.

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


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.


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.


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


There are also Python bindings for gamin.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜