[Python] 운영체제 Module(os, sys, threading, queue)

운영체제
  os module
    os.getcwd() - 현재 작업 디렉토리 조회
    os.chdir() - 현재 작업 디렉토리 변경
    os.access(path, mode) - path에 대해 mode에 해당하는 작업이 가능한지 조사
      mode : F_OK(path 존재 여부), R_OK(읽기 가능), W_OK(쓰기 가능), X_OK(실행 가능)
    os.listdir(path) - path에 존재하는 파일과 디렉토리 목록
    os.mkdir(path[, mode]) - 디렉토리 생성
    os.makedirs(path[, mode]) - 디렉토리를 재귀적으로 생성
    os.remove(path) - path 삭제
    os.unlink(path) - path 삭제
    os.rmdir(path) - 비어있는 디렉토리 삭제
    os.removedirs(path) - 비어있는 디렉토리를 재귀적으로 삭제
    os.rename(src, dst) - src를 dst로 이름을 변경하거나 이동
    os.renames(src. dst) - src를 dst로 이름을 변경하거나 이동, 이동 시 필요한 디렉토리 생성
    os.stat(path) - path 정보 조회
    os.utime(path, times) - path의 access time, modified time을 times로 수정
    os.walk(top[, topdown=True[, onerror=None[, followlinks=False)
      - top으로 지정된 디렉토리를 순회하며 파일, 디렉토리 이름을 순차적으로 반환
    os.mask(mask) - umask 설정
    os.pipe() - 읽기,쓰기 전용의 파이프 생성
    os.fdopen(fd[, mode[, bufsize]]) - 파일 디스크립터를 이용해 파일 객체 생성
    os.popen(command[, mode[, bufsize]])
      - command를 수행하며 pipe를 엽니다.(Popen class 사용 권장)
    os.name - 운영체제 이름
    os.environ - 환경변수를 나타내는 사전
    os.getpid() - 현재 프로세스 아이디
    os.getenv(varname[, value]) - 환경변수 값 조회(환경변수 값이 없을 경우 value 반환)
    os.putenv(varname, value) - 환경변수(varname=value) 저장
    os.strerror(code) - code에 해당하는 에러 메시지
    os.system(command) - command를 실행(성공하면 0 반환)
    os.startfile(path[, operation]) - path를 os에서 지정된 프로그램으로 실행
    os.execl(path, arg0, arg1, ..)
    os.execle(path, arg0, arg1, .., env)
    os.execlp(file, arg0, arg1, ..)
    os.execlpe(file, arg0, arg1, .., env)
    os.execv(path, args)
    os.execve(path, args, env)
    os.execvp(file, args)
    os.execvpe(file, args, env)
      - 현재 프로세스에서 새로운 프로그램 실행
        명령어에 'l'이 붙은 것은 인자의 수가 정해져 있는 경우
        명령어에 'v'가 붙은 것은 args라는 tuple로 인자 받음
        명령어에 'e'가 붙은 것은 환경변수 env를 받음
        명령어에 'p'가 붙은 것은 환경변수의 path 이용
        ex) execl('c:/python32/python', 'python', '-v')
            execv('python', ('python', '-v'))
            execle('c:/python32/python', 'python', '-v', { 'HOME':'C:/' })



  sys module
    sys.argv - python 스크립트로 넘어온 인자 리스트
    sys.exc_info() - 현재 발생한 예외 정보를 tuple로 반환
    sys.prefix, sys.exec_prefix, sys.executable
      - python이 설치된 경로와 실행파일
    sys.exit([arg]) - 프로세스 종료(arg=0이면 정상 종료)
    sys.getrefcount(object) - 객체의 레퍼런스 카운트 값
    sys.getwindowsversion() - 윈도우 버전을 tuple로 반환
    sys.modules - 로딩되어 있는 모듈을 사전 형식으로 반환
    sys.path - module을 찾을 때 참조하는 경로
    sys.copyright - python 저작권
    sys.version - python 버전
    sys.getdefaultencoding() - 기본 문자열 인코딩
    sys.stdin - 표준 입력 스트림
    sys.stdout - 표준 출력 스트림
    sys.stderr - 표준 에러 스트림



  threading module
    Thread 객체 - 스레드를 사용하려면 threading.Thread를 상속받은 클래스 객체를 생성해 사용
                  생성자를 재정의하는 경우 반드시 Thread.__init__() 호출
      Thread.start() - 스레드 시작
      Thread.run() - 스레드 동작 정의
      Thread.join([timeout]) - 스레드 종료 대기
    Lock 객체
      - Lock 객체는 locked, unlocked 2가지 상태 중 1개
        unlocked 상태에서 acquire() 호출하여 locked 상태로 변경
        locked 상태에서 release() 호출하여 unlocked 상태로 변경
        locked 상테에서 다른 스레드가 acquire() 호출하면 대기



  queue module
    queue.Queue(maxsize) - FIFO queue 생성
    queue.LifoQueue(maxsize) - LIFO queue(=> stack) 생성
    queue.PriorityQueue(maxsize) - 우선순위 queue 생성
                                   입력되는 아이템의 형식은 (순위, 아이템)의 tuple 형식으로 입력
                                   우선순위는 숫자가 작을수록 순위가 높음
    qsize() - 큐 객체에 입력된 아이템의 개수
    put(item[, block[, timeout]]) - 큐 객체에 아이템 입력
    put_nowait(item) - blocking없이 큐 객체에 아이템 입력(꽉 찬 경우 queue.Full 예외 발생)
    get([block[, timeout]]) - 큐 특성에 맞추어, 아이템 1개 반환
    get_nowait() - blocking없이 큐 특성에 맞추어, 아이템 1개 반환(아이템 없는 경우, queue.Empty 예외 발생)