Post

Python 표준 라이브러리 - sys 모듈(2)

👉🏻sys모듈 (1)편은 여기



3. ‘exit()’

  • ‘sys.exit()’ 함수는 Python 스크립트를 즉시 종료시킨다.
  • ‘sys.exit()’를 호출하기 전에 열려 있는 리소스가 있다면, ‘with’ 구문을 사용하여 이런 리소스를 먼저 해제하고 프로그램을 종료하자. 데이터 손실, 네트웍 자원 누수 등의 위험이 있으니..
  • 일반적으로 성공은 ‘sys.exit(0)’을 사용, 오류나 비정상 종료는 ‘sys.exit(1)’ 또는 다른 숫자를 사용하자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import sys

# 조건에 따른 종료
import sys

# 조건에 따른 종료 예시
if 사용자_입력 == '종료':
    sys.exit()  # 또는 sys.exit(0) 성공적인 종료

# 오류 발생 시 종료 예시
try:
    # 위험한 작업 수행
except RuntimeError:
    sys.exit(1)  # 오류로 인한 종료
  • ‘sys.exit()’ 을 호출하면, 프로그램은 종료 상태코드 ‘0’을 반환하며 종료한다.
  • ‘sys.exit(1)’ 을 호출하면, 프로그램은 종료 상태코드 ‘1’을 반환하며 종료한다. (종료 상태코드는 코드의 성공 여부를 나타내므로 특히 다른 시스템에서 이어지는 작업등으로 호출될 때 중요하게 사용)
1
2
3
4
5
6
7
8
9
10
11
import sys

try:
    # 여기서 어떤 작업을 수행
    pass
except Exception as e:
    print(f"오류 발생: {e}")
    sys.exit(1)  # 오류 발생 시, 종료 상태 코드 1로 종료

# 성공적으로 모든 작업을 완료한 경우
sys.exit(0)  # 성공적인 종료를 나타내는 종료 상태 코드 0으로 종료




아래 내용은 조금 어려운 설명이 될 수 있으니 다른 자료를 찾아보기도 하고 여러번 반복하여 숙지하자.

알고 가기, 스트림(stream) 이란?

  • 쉽게말해 데이터가 흘러가는 통로에서의 흐름 같은 것으로 볼 수 있다.
  • 데이터가 한 곳에서 다른 곳으로 연속적으로 이동하는 것을 말한다.


4. ‘stdin’, ‘stdout’, ‘stderr’

  • 자주 쓰이는 ‘print()’, ‘input()’ 함수는 ‘stdin’, ‘stdout’ 을 기반으로 동작하는 함수이다.
  • 이 객체들은 ‘sys’ 모듈에서 제공하는 스트림 객체이다.
  • Python 프로그램이 사용자와 상호작용하는 기본적인 방식을 제공한다.
  • 스트림을 사용하면 프로그램이 데이터를 효율적으로, 필요한 만큼씩 처리할 수 있다. 데이터가 한번에 많이 오갈때, 스트림은 이런 상황들을 적절히 관리하여 순차적으로 데이터를 처리할 수 있도록 도와준다.
  • ‘read(), write(), flush()’ 등의 메서드를 사용한다.



    4-1. ‘sys.stdin’ (표준 입력 스트림)

    • 사용자의 키보드 입력과 같은 것을 받아들임. 프로그램이 통로를 통해 사용자의 입력을 받아들이는 것
    • ‘input()’ 함수는 사용자의 입력을 받기 위해 ‘sys.stdin’을 사용한다. 그리고 사용자가 입력을 완료하고 엔터를 누를 때까지 기다린다.
    • ‘input()’ 함수 보다 더 복잡할 수 있지만, 스트림을 직접 제어하고 싶을 때 쓰인다.
    1
    2
    3
    4
    5
    6
    7
    
      # 터미널에서 실행해야 함
      import sys
    
      for line in sys.stdin:
          if 'exit' == line.strip():
              break
          print(f'입력한 내용: {line}', end='')
    



    4-2. ‘sys.stdout’ (표준 출력 스트림)

    • 프로그램이 화면에 텍스트를 출력할 때 사용. 프로그램이 통로를 통해 화면으로 데이터를 보내는 것
    • ‘print()’ 함수의 내부에는 ‘sys.stdout’을 사용하여 텍스트를 출력한다. ‘print()’ 함수는 자동으로 줄바꿈을 추가하고, 여러 인자를 공백으로 구분하여 출력한다.
    1
    2
    3
    4
    
      import sys
    
      sys.stdout.write("Hello, World!\n")
      sys.stdout.flush()
    



    4-3. ‘sys.stderr’ (표준 오류 스트림)

    • 오류 메세지를 출력할 때 사용. 오류 메세지가 통로를 통해 화면으로 전달되는 것
    1
    2
    3
    4
    
      import sys
    
      sys.stderr.write("이것은 오류 메시지입니다.\n")
      sys.stderr.flush()
    



    이걸 굳이 왜 배워야 하지?

    • 데이터 스트림은 다른 프로그램과의 데이터 통합 및 파이프라인을 구축하는 데 필수적으로 사용된다. 예를 들어, 한 프로그램의 출력을 다른 프로그램의 입력으로 연결하는 작업에 사용한다.
    • 프로그래밍의 기본 원리이다. 입출력에 대한 기본 원리를 익힐 수 있다.
    • 데이터의 처리 순서, 버퍼링이 이루어지는 과정에 대한 이해를 돕는다.

5. ‘version’ & ‘version_info’

  • Python 버전을 확인하는 데 사용된다. 특정 버전에만 존재하는 기능이나 문법을 사용하기 전에 사용하면 유용하다.
1
2
3
import sys

print("version:", sys.version)



6. ‘getsizeof()’

  • 객체의 메모리 크기를 바이트 단위로 반환한다. 메모리 사용량을 모니터링, 최적화할 때 유용하다.
1
2
3
4
5
import sys

my_list = [1, 2, 3, 4, 5]
size = sys.getsizeof(my_list)
print(f"리스트의 메모리 크기: {size} 바이트")



7. ‘sys.platform’

  • 실행 중인 운영체제에 대한 정보를 제공한다. 특정 OS에서만 실행되어야 할 때 유용하다.
1
2
3
4
5
6
7
8
9
import sys

platform = sys.platform
if platform == "linux" or platform == "linux2":
    print("리눅스 운영 체제에서 실행 중입니다.")
elif platform == "darwin":
    print("맥 OS에서 실행 중입니다.")
elif platform == "win32":
    print("윈도우에서 실행 중입니다.")






‘sys’ 모듈을 공부함으로써 Python의 고급 기술에 한 발짝 더 다가설 수 있었음.

This post is licensed under CC BY 4.0 by the author.