8.2.3 출력 위치 지정하기: file
이번에 배울 기능은 코드를 보면서 설명하겠습니다.
import sys
print("파이썬", "자바", file=sys.stdout)
print("파이썬", "자바", file=sys.stderr)
실행결과 |
파이썬 자바 파이썬 자바 |
첫 번째 문장은 sys 모듈을 가져와서 사용하겠다는 의미임을 알죠? 나머지 두 문장에 사용한 file은 print() 문의 실행결과를 어디에 출력할지 지정하는 기능입니다. 첫 번째 값 sys.stdout은 표준 출력(Standard Output)을 나타내며, 현재 표준 출력인 VSCode의 터미널에 결과를 출력하라는 뜻입니다. 두 번째 값 sys.stderr은 표준 오류(Standard Error)를 나타내며, 오류가 발생했을 때 터미널에 오류 메시지를 띄우라는 뜻입니다.
설정한 두 값은 결과가 같아 보이지만, 실제 용도는 다릅니다. 보통 프로그램 실행 과정에서 몇 시에 어떤 작업을 어떤 방식으로 수행하고 있으며 실행결과가 어떠한지 등의 정보를 기록하는데, 이를 로그(log)를 남긴다고 합니다. 로그를 남길 때 sys.stdout은 일반적인 내용을, sys.stderr는 오류가 발생했을 때 관련 내용을 출력합니다. 둘을 구분해 사용하면 프로그램이 의도치 않게 작동했을 때 오류 로그를 확인해서 빠르게 상황을 파악하고 그에 맞는 조치를 취할 수 있습니다. 다만, 두 값은 어느 정도 규모가 있는 프로젝트를 진행할 때 필요한 기능이고, 이는 심화 내용이므로 입문 단계에서는 ‘이런 기능이 있구나’ 정도만 알고 넘어가도 좋습니다.
터미널 대신 파일에 출력하는 방법도 있습니다. 이때는 print() 문으로 출력하려는 내용이 지정한 파일에 표시되고, 터미널에서는 출력 내용을 확인할 수 없습니다. 자세한 내용은 8.4.1 파일 열고 닫기: open(), close()에서 배우겠습니다.