Wenn Sie eine allgemeine Lösung wünschen, sollten Sie pyinotify
nehmen, das ist ein Wrapper für das inotify
Feature des Linuxkernels (Kernelversion> = 2.6.13). Damit können Sie sich für bestimmte Ereignisse im Dateisystem registrieren, wie z. in dem folgenden Code:
from pyinotify import WatchManager, ThreadedNotifier, ProcessEvent, EventsCodes
file_to_monitor = "/tmp/test.py"
class FSEventHook(ProcessEvent):
def __init__(self, watch_path):
ProcessEvent.__init__(self)
wm = WatchManager()
wm.add_watch(watch_path, EventsCodes.ALL_FLAGS['IN_CLOSE_WRITE'], rec=False)
self.notifier = ThreadedNotifier(wm, self)
def start(self):
self.notifier.start()
def process_IN_CLOSE_WRITE(self, event):
if os.path.isfile(event.pathname):
print "%s changed"%pathname
fshook = FSEventHook(file_to_monitor)
fshook.start()
Folgende Ereignisse werden unterstützt: IN_MOVED_FROM, IN_CREATE, IN_ONESHOT, IN_IGNORED, IN_ONLYDIR, IN_Q_OVERFLOW, IN_MOVED_TO, IN_DELETE, IN_DONT_FOLLOW, IN_CLOSE_WRITE, IN_MOVE_SELF, IN_ACCESS, IN_MODIFY, IN_MASK_ADD, IN_CLOSE_NOWRITE, IN_ISDIR, IN_UNMOUNT, IN_DELETE_SELF, ALL_EVENTS, IN_OPEN, IN_ATTRIB
. Für jede von ihnen muss eine eigene process_XXX()
Methode implementiert werden, die zurückgerufen wird, wenn das Ereignis ausgelöst wird.
Ich glaube nicht, dass er das fragt. Ich denke, er möchte wissen, wer die betreffende Datei zuletzt bearbeitet hat. – scvalex
Und so weit ich weiß, kann er nicht. Er kann herausfinden, wer die Datei erstellt hat und wer dazu schreiben darf, nicht aber, wer sie zuletzt gespeichert hat. – scvalex