Python에서 표준 출력을 파일로 리디렉션
이 게시물은 표준 출력을 Python의 파일로 리디렉션하는 방법에 대해 설명합니다.
기본적으로 표준 출력은 콘솔에 인쇄됩니다. 그러나 다음 기능 중 하나를 사용하여 해당 출력을 파일로 리디렉션할 수 있습니다.
1. 셸 리디렉션
표준 출력을 파일로 리디렉션하는 가장 일반적인 방법은 셸 리디렉션을 사용하는 것입니다. 이 접근 방식의 장점은 코드를 변경할 필요가 없다는 것입니다. 리디렉션하는 방법은 다음과 같습니다. stdout
그리고 stderr
를 사용하여 파일로 출력 >
운영자:
1 2 |
$ python main.py > file. |
2. 사용 sys.stdout
표준 출력을 파일로 리디렉션하는 또 다른 간단한 솔루션은 다음을 설정하는 것입니다. sys.stdout
아래와 같이 파일 객체에
1 2 3 4 5 6 |
import sys path = 'path/to/some/dir/file.txt' sys.stdout = open(path, 'w') print('Hello, World') |
3. 사용 contextlib.redirect_stdout()
기능
다른 옵션은 contextlib.redirect_stdout()
리디렉션을 위한 컨텍스트 관리자를 설정하는 Python 3.4의 함수 sys.stdout
다른 파일로. 작동 예는 다음과 같습니다.
1 2 3 4 5 6 7 |
import contextlib path = 'path/to/some/dir/file.txt' with open(path, 'w') as f: with contextlib.redirect_stdout(f): print('Hello, World') |
4. 커스텀 로깅 클래스
마지막으로 필요에 맞게 사용자 정의 로깅 클래스를 작성할 수 있습니다. 설명을 위해 다음 클래스는 콘솔과 파일 모두에 표준 출력을 인쇄합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import sys class Logger: def __init__(self, filename): self.console = sys.stdout self.file = open(filename, 'w') def write(self, message): self.console.write(message) self.file.write(message) def flush(self): self.console.flush() self.file.flush() path = 'path/to/some/dir/file.txt' sys.stdout = Logger(path) print('Hello, World') |
이것이 표준 출력을 Python의 파일로 리디렉션하는 것입니다.