für eine Applikation brauche ich eine Dateisystemüberwachung, d.h. ich muss feststellen, wenn bestimmte Dateien in einem Kommunikationsverzeichnis geändert werden, um darauf reagieren zu können.
Da die Applikation PyQt benutzt, habe ich entsprechend versucht, dafür den QtFileWatcher zu verwenden. Mein Code sieht so aus (gekürzt):
Code: Alles auswählen
class Ui_WSMMain(QtGui.QMainWindow):
def show(self):
...
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
# create a file system monitor to watch the communication dir
self._fsMonitor = QtCore.QFileSystemWatcher(self)
self._fsMonitor.addPath(WsManager().commDir)
self._fsMonitor.addPath(WsManager().commFile)
self.connect(self._fsMonitor, QtCore.SIGNAL("directoryChanged(const QString&)"), self._commDirEventHandler)
self.connect(self._fsMonitor, QtCore.SIGNAL("fileChanged(const QString&)"), self._commFileEventHandler)
def _commFileEventHandler(self, theString):
"""
Handles file events for the communication file.
"""
sys.stderr.write("*** fileEvent:%s\n" % theString)
sys.stderr.flush()
def _commDirEventHandler(self, theString):
"""
Handles file events for the communication file.
"""
sys.stderr.write("*** dirEvent:%s\n" % theString)
sys.stderr.flush()
Kennt jemand das Problem und weiss einen Workaround (ausser bei jedem directoryChanged-Event alle Dateien auf Veränderungen untersuchen)? Mit Googeln habe ich nichts gefunden.
Ich benutze Qt 4.3.2 unter Windows XP.
Vielen Dank im Voraus
Wolfgang