로딩
요청 처리 중입니다...

Python print() 함수 완벽 가이드: 기본 출력부터 f-string, sep·end 옵션, 파일 저장까지 한 번에 정리

 Python print() 함수 완벽 가이드: 기본 출력부터 f-string, sep·end 옵션, 파일 저장까지 한 번에 정리

flush=False(기본값)은 버퍼에 모아두었다가 적절한 때 출력하고, flush=True는 버퍼를 강제로 비워 바로 출력합니다. 기본값은 False로 대부분의 경우 자동 버퍼링으로 충분하며, 실행 환경에 따라 출력 시점이 달라질 수 있습니다. 전역적으로 버퍼링을 끄려면 Python을 -u 옵션이나 PYTHONUNBUFFERED=1로 실행하면 됩니다.

flush 옵션이 꼭 필요한 상황은 총 네 가지로 정리됩니다. 첫째, 실시간 진행 상황 표시가 필요할 때입니다. 다운로드나 로딩, 반복 처리 상황 등을 즉시 화면에 보여주려면 flush=True를 사용해 한 줄씩 바로 출력합니다. 둘째, 실시간 로그 기록이 필요할 때입니다. 서버 로그나 데이터 수집 프로그램, 실시간 모니터링 등에서 출력이 버퍼에 남아 있다가 기록되면 중간 종료 시 로그 누락이 생길 수 있는데, 이때 flush=True로 즉시 기록되게 합니다. 셋째, 반복문 안에서 출력이 몰리는 문제를 해결할 때입니다. 반복문 안에서 여러 번 print를 호출하면 출력이 버퍼에 쌓여 지연되거나 한꺼번에 나오는데, 이때 flush=True로 한 줄씩 즉시 출력합니다. 넷째, 파일 출력 시 데이터 안정성을 보장하고자 할 때입니다. 실행 중 중간 종료로 내용이 파일에 남지 않을 수 있는데, flush=False는 버퍼에 남겼다가 기록하므로 손실 가능성이 있어 flush=True로 즉시 기록되게 합니다.

화면 출력과 파일 출력의 차이는 또한 명확합니다. 화면은 대개 줄 단위(line buffering)로 동작해 줄바꿈이 나오면 즉시 보이는 반면, 파일은 블록 단위로 동작하여 일정 크기가 차야 실제로 기록됩니다. flush=True를 쓰면 줄 단위나 블록 단위의 규칙과 상관없이 즉시 출력·기록이 보장됩니다. sys.stdout.flush()와의 관계도 공통점은 출력 버퍼를 강제로 비워 지금까지 출력된 내용을 바로 보여주는 점입니다. 차이점은 print(..., flush=True)은 실행할 때마다 그 줄을 즉시 출력하고 버퍼를 비우는 반면, sys.stdout.flush()는 여러 번 출력한 뒤 특정 시점에 직접 호출해 전체 버퍼를 비웁니다. 따라서 간단한 실시간 출력에는 앞의 방식이, 여러 줄의 타이밍 제어가 필요한 경우에는 뒤의 방식이 더 적합합니다.

# print함수 # 파이썬출력형식 # 파이썬출력 # 파이썬줄바꿈 # 파이썬문자열출력 # 파이썬기초문법 # 파이썬print사용법 # 파이썬fstring # 파이썬format # 파이썬endsep옵션 # 파이썬 # Pythonprint # Python # 파이썬파일출력