Home Python - print()로 파일에 출력하기 (sys.stdout - redirection)
Post
Cancel

print() 함수를 사용하면 기본적으로 콘솔창에 출력이 된다.
그런데 이걸 파일에 기록하고 싶을 때가 있는데 이 때에는 sys.stdoutredirection 해 주면 된다.
아래의 예제코드를 보자.

1
2
3
4
5
6
7
8
9
10
import sys

original_stdout = sys.stdout  # original stdout을 임시 저장
file_path = ".\\log_test.txt"
log = open(file_path, "w")
sys.stdout = log  # stdout을 log_test.txt로 redirection
print("hello world")
sys.stdout = original_stdout  # sys.stdout을 원래로 돌림.

print("printing at console")

결과를 보면 콘솔창에는 아무런 출력이 없고 아래와 같이 log_test.txt파일에 출력을 명령한 hello world가 입력되어 있는 것을 볼 수 있다.

redirection

그리고 stdout을 원래대로 돌려놓고 print 한 것은 console창에 잘 출력이 되는 것을 볼 수 있다.

1
printing at console

이번에는 context manager를 이용해서 파일에 출력하는 것을 보자.

1
2
3
4
5
6
7
8
9
10
11
import sys

file_path = ".\\log_test.txt"

with open(file_path, 'w') as log:
    original_write = sys.stdout
    sys.stdout = log
    print("hello world!")
    sys.stdout = original_write

print("printing at console")

마찬가지로 잘 출력이 되는 것을 확인 할 수 있다.

redirection2

1
printing at console

끝~👌

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

Python sys.stdout.flush()

마인크래프트 포지 모드 설치 - (도티TV 초현실 롤러코스터)