2009-06-23 5 views
0

가정 내 시스템 로그인 ID는 tom2deu입니다. 파이썬 프로그램이 하나 있습니다. 이제이 Python 프로그램을 수정하려고합니다.로그인 입력

내 질문

우리는 seprate 메모장 또는 다른 파일로 내 로그인 ID를 인쇄 할 수 있습니까?

은 시스템을 기록하고 프로그램을 수정 한 모든 세부 정보 (로그인 ID)를 인쇄 할 수 있음을 의미합니다.

답변

1

는 ..

수입 OS
인쇄 os.environ [ '사용자 이름']

또는

os.getlogin()

다음 변수 사용에 저장 이러한 시도 파일을 텍스트 파일로 저장하는 처리.

+0

나는 그것이 그가 묻는 것이라고 생각하지 않는다. 나는 그가 문제의 파일을 누가 마지막으로 편집했는지 알고 싶어한다고 생각한다. – scvalex

+0

그리고 내가 아는 한 그는 그렇게 할 수 없습니다. 그는 파일을 만든 사람과 파일에 대한 쓰기 권한이있는 사람을 찾을 수 있지만 마지막으로 저장 한 사람은 알 수 없습니다. – scvalex

2

나는 당신이 해결하려고하는 것이 확실하지 않지만 trac k 소스 파일을 변경하면 Subversion과 같은 버전 제어 시스템을 사용해야합니다. 요약하면 소스 파일의 모든 변경 사항을 추적하고 충돌을 관리합니다 (두 사람이 동시에 파일을 변경하려고하는 경우).

2

일반적인 해결책을 원한다면 리눅스 커널의 inotify 기능 (커널 버전> = 2.6.13)에 대한 래퍼 인 pyinotify을 사용해야합니다. 이 파일 시스템을 사용하여 예를 들어 파일 시스템과 같은 특정 이벤트를 등록 할 수 있습니다. 다음 코드 :

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() 

다음과 같은 이벤트가 지원됩니다 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합니다. 각각에 대해 자체적으로 process_XXX() 메소드를 구현해야하며, 이벤트가 트리거되면 다시 호출됩니다.

0

누가 파일을 변경했는지 추적 할 수 있는지 묻는 것입니다. 그리고 이것은 파이썬 질문이 아니라 운영체제에 관한 질문입니다. 파일을 변경 한 사람을 추적하려면 감사 시스템을 설치해야합니다. Linux를 사용하는 경우,이 정보를 추적하도록 구성 할 수있는 감사 서브 시스템이 있다고 생각합니다.