2009-06-23 4 views
0

Angenommen Meine System-Login-ID lautet tom2deu. Ich habe ein Python-Programm. Jetzt werde ich dieses Python-Programm ändern.Login-Eingabe

Meine Frage

Können wir meinen Login-ID zu einem seprate Notizblock oder jede andere Datei drucken?

bedeutet, können wir jede Person Detail (Login-ID), die das System protokolliert und das Programm geändert hat.

Antwort

1

versuchen, diese ..

import os
Druck os.environ [ 'username']

oder

os.getlogin()

dann in einer Variablen speichern und zu verwenden Datei-Handling, um es als eine Textdatei zu speichern ..

+0

Ich glaube nicht, dass er das fragt. Ich denke, er möchte wissen, wer die betreffende Datei zuletzt bearbeitet hat. – scvalex

+0

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

2

Ich bin mir nicht sicher, welches Problem Sie versuchen zu lösen, aber wenn Sie Trac wollen k Änderungen an Quelldateien sollten Sie wahrscheinlich ein Versionskontrollsystem wie Subversion verwenden. Kurz gesagt, es verfolgt alle Änderungen an Ihren Quelldateien und verwaltet auch Konflikte (wenn zwei Personen versuchen, eine Datei gleichzeitig zu ändern).

2

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.

0

Sie fragen, ob Sie verfolgen können, wer Änderungen an einer Datei vorgenommen hat. Und das ist keine Python-Frage, sondern eine Frage des Betriebssystems. Um verfolgen zu können, wer eine Datei geändert hat, muss ein Auditing-System installiert sein. Wenn Sie Linux verwenden, verfügt es über ein Audit-Subsystem, das Sie konfigurieren können, um diese Informationen zu verfolgen, denke ich.