Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I'm not sure if GIO allows you to have more than one monitor at once, but if it does there's no* reason you can't do something like this:</p> <pre><code>import gio import os def directory_changed(monitor, file1, file2, evt_type): if os.path.isdir(file2): #maybe this needs to be file1? add_monitor(file2) print "Changed:", file1, file2, evt_type def add_monitor(dir): gfile = gio.File(dir) monitor = gfile.monitor_directory(gio.FILE_MONITOR_NONE, None) monitor.connect("changed", directory_changed) add_monitor('.') import glib ml = glib.MainLoop() ml.run() </code></pre> <p>*when I say no reason, there's the possibility that this could become a resource hog, though with nearly zero knowledge about GIO I couldn't really say. It's also entirely possible to roll your own in Python with a few commands (<code>os.listdir</code> among others). It might look something like this</p> <pre><code>import time import os class Watcher(object): def __init__(self): self.dirs = [] self.snapshots = {} def add_dir(self, dir): self.dirs.append(dir) def check_for_changes(self, dir): snapshot = self.snapshots.get(dir) curstate = os.listdir(dir) if not snapshot: self.snapshots[dir] = curstate else: if not snapshot == curstate: print 'Changes: ', for change in set(curstate).symmetric_difference(set(snapshot)): if os.path.isdir(change): print "isdir" self.add_dir(change) print change, self.snapshots[dir] = curstate print def mainloop(self): if len(self.dirs) &lt; 1: print "ERROR: Please add a directory with add_dir()" return while True: for dir in self.dirs: self.check_for_changes(dir) time.sleep(4) # Don't want to be a resource hog w = Watcher() w.add_dir('.') w.mainloop() </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload