我使用Gio GFile monitor_file错了吗?

时间:2013-05-08 23:31:45

标签: python linux file-management gio

我正在使用这样的Gio monitor_file。

def callback(*args):
    print 'ok'

gio_pointer = Gio.File.new_for_path(os.environ['HOME']+'/temp')
monitor = gio_pointer.monitor_file(Gio.FileMonitorFlags.NONE, None)
monitor.connect("changed", callback)

修改后的文件没有任何反应。 Gio适用于其他文件操作,如创建,读取和写入。

我使用它是错误的,还是这可能是系统问题?

我的环境:Gtk图形,Python,Linux Ubuntu 12.10,普通电脑。

1 个答案:

答案 0 :(得分:0)

它可能会失败,因为需要gobject的主循环才能使信号起作用。

以下完整示例适用于我:

import os
from gi.repository import Gtk, Gio

# This allows Ctrl+C to exit the program
import signal
signal.signal(signal.SIGINT, signal.SIG_DFL)

def callback(m, f, o, event):
    # Without this check, multiple 'ok's will be printed for each file change
    if event == Gio.FileMonitorEvent.CHANGES_DONE_HINT:
        print ('ok')

gio_file = Gio.File.new_for_path(os.environ['HOME']+'/temp')
monitor = gio_file.monitor_file(Gio.FileMonitorFlags.NONE, None)
monitor.connect("changed", callback)

Gtk.main()