본문 바로가기
Python

[Py] sys.exit()

by ds31x 2024. 9. 11.

Python의 sys.exit() 는 소스코드 내에서 프로그램을 종료(=pvm종료)시키기 위해 호출하는 함수임.

  • 호출(call)할 때, 종료 상태 코드를 argument로 전달받음.
  • 해당 종료상태코드는 sys모듈을 통해 os로 넘어감.

사용가능한 argument의 종류는 다음과 같음:

1. 정수 (Integer)

  • 0:
    • 정상 종료를 나타냄.
    • 즉, sys.exit(0)은 프로그램이 정상적으로 종료되었음을 os에 알림.
  • 그 외의 값:
    • 에러 종료를 나타냄.
    • 일반적으로 오류가 발생했을 때 1 이상의 값을 사용함.
    • 오류시 0 이외의 어떤 값이든 가능하지만, 관례상 1이 자주 사용됨.
    • 예를 들어, sys.exit(1)은 프로그램이 오류로 인해 종료되었음을 의미함.

2. None

  • None 값을 전달하면 기본적으로 sys.exit(0)과 동일하게 취급되어 정상 종료로 간주됨.
  • 즉, sys.exit() 또는 sys.exit(None)은 프로그램을 정상적으로 종료하는 것과 마찬가지임.

3. 문자열 (String)

  • 문자열을 argument(인수)로 전달하면, 해당 문자열이 표준 오류 스트림(stderr)에 출력되고 이 후에 프로그램이 종료됨.
  • 이 경우에도 종료 상태 코드1로 설정됨.
  • 예를 들어, sys.exit("Error: Invalid input")
    • 프로그램을 종료하면서
    • "Error: Invalid input"이라는 문자열을 stderr에 출력함.

4. 객체 (Object)

  • Object를 argument로 전달할 수 있음.
  • 전달된 object가 string으로 변환될 수 있는 경우(__str__이 동작)엔 변환된 문자열이 출력된 후 종료.
  • 문자열로 변환이 불가능하면 그냥 종료됨.
  • 이 경우에도 비정상 종료로 간주되어 상태 코드가 1로 os에 전달됨.

사용 예시:

import sys

# 정상 종료
sys.exit(0)  # 또는 sys.exit()나 sys.exit(None)

# 오류 종료
sys.exit(1)

# 오류 메시지 출력 후 종료
sys.exit("An error occurred.")

 

terminal의 shell을 통해 위의 코드들을 실행하는 python 스크립트를 실행하고 나서

Windows의 cmd prompt 에서는 %ERRORLEVEL% 을 echo 명령어로 출력하면 종료상태코드를 볼 수 있고,

bash, zsh 등의 경우에는 $? 를 사용하면 된다.


같이 읽어보면 좋은 자료들

sys 모듈 관점에서의 설명이 필요하면 다음 글에서 exit부분을 참고: https://ds31x.tistory.com/104

 

[Python] sys 모듈

sys 모듈은interpreter에 의해 사용되거나 유지되는 variables와interpreter와 밀접(interpreter 종료 등)하게 관련된 functions에대한 access를 제공함. 주로 많이 이용되는 attributes는 다음과 같음.sys.argvPython scri

ds31x.tistory.com

 


 

728x90