print() 함수는 일반적으로 명령줄이나 파이썬 대화형 인터프리터에 텍스트를 화면에 표시하는 용도로 사용됩니다. 그러나 이 함수는 단순히 화면 출력에만 국한되지 않습니다. file 매개변수를 활용하면 동일한 print() 함수로 파일이나 출력 스트림에 직접 데이터를 기록할 수 있습니다.
파일에 출력하기
파일에 내용을 쓰려면 먼저 새 파일 이름으로 파일을 쓰기 모드(w)로 열어야 합니다. 이후 print() 함수의 file 매개변수에 해당 파일 객체를 지정하면, 출력 결과가 콘솔이 아닌 파일에 저장됩니다. 파일에 기록할 값들은 일반적인 인자 형태로 print() 함수에 전달하면 됩니다.
예제 코드
Newfile = open("exam_score.txt", "w")
# 변수 정의
exam_name = "Degree"
exam_date = "2-Nov"
exam_score = 323
print(exam_name, exam_date, exam_score, file=Newfile, sep=",")
# 파일 닫기
Newfile.close()
실행 결과
위 코드를 실행하면 exam_score.txt라는 이름의 파일이 생성되며, 파일에는 다음과 같은 내용이 기록됩니다.
Degree,2-Nov,323
여기서 sep="," 옵션은 각 값 사이를 쉼표로 구분하도록 지정한 것입니다. 이처럼 sep, end 등 다른 매개변수들도 파일 출력 시 함께 사용할 수 있어 유연한 포맷팅이 가능합니다.
표준 출력 및 표준 에러 스트림에 출력하기
file 매개변수는 실제 파일뿐만 아니라 sys 모듈이 제공하는 표준 출력 스트림(sys.stdout)이나 표준 에러 스트림(sys.stderr)에도 지정할 수 있습니다. 특히 오류 메시지나 경고를 일반 출력과 구분하여 기록하고 싶을 때 sys.stderr가 유용하게 활용됩니다.
예제 코드
import sys
Newfile = open("exam_score.txt", "w")
# 변수 정의
exam_name = "Degree"
exam_date = "2-Nov"
exam_score = 323
print(exam_name, exam_date, exam_score, file=sys.stderr, sep=",")
# 파일 닫기
Newfile.close()
실행 결과
위 코드를 실행하면 출력값이 표준 에러 스트림으로 전달되어 다음과 같은 결과가 나타납니다.
Degree,2-Nov,323
정리하자면, print() 함수의 file 매개변수를 사용하면 별도의 write() 호출 없이도 간결하고 읽기 쉬운 방식으로 파일이나 다양한 출력 스트림에 데이터를 기록할 수 있습니다. 로그 작성, 리포트 생성 등 반복적인 파일 출력 작업에서 코드 가독성을 높이고 싶다면 이 방법을 적극적으로 활용해 보시기 바랍니다.