'sys라이브러리를 이용해서 파이썬 출력 결과를 출력도 하면서 텍스트 파일로 저장하는 방법을 알려줘'

1. 

import os
import sys

scriptname = os.path.basename(__file__)

class Tee:
    def __init__(self, filename, mode='w'):
        self.terminal = sys.stdout  # 원래 터미널 출력
        self.file = open(filename, mode, encoding='utf-8')

    def write(self, message):
        self.terminal.write(message)  # 터미널에 출력
        self.file.write(message)  # 파일에 저장

    def flush(self):
        self.terminal.flush()
        self.file.flush()

    def close(self):
        self.file.close()

# 사용법
sys.stdout = Tee('cmdResult_' + scriptname[:-3] + '.txt')

print("안녕하세요!")
print("이 내용은 터미널에도 출력되고 파일에도 저장됩니다.")

# 원래 stdout 복원 (선택사항)
sys.stdout.close()
sys.stdout = sys.stdout.terminal

 

2. 

import os
import sys
from datetime import datetime

scriptname = os.path.basename(__file__)
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')

class Tee:
    def __init__(self, filename, mode='w'):
        self.terminal = sys.stdout  # 원래 터미널 출력
        self.file = open(filename, mode, encoding='utf-8')
    def write(self, message):
        self.terminal.write(message)  # 터미널에 출력
        self.file.write(message)  # 파일에 저장
    def flush(self):
        self.terminal.flush()
        self.file.flush()
    def close(self):
        self.file.close()

# 사용법
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
sys.stdout = Tee('cmdResult_' + scriptname[:-3] + '_' + timestamp + '.txt')

print("안녕하세요!")
print("이 내용은 터미널에도 출력되고 파일에도 저장됩니다.")

# 원래 stdout 복원 (선택사항)
sys.stdout.close()
sys.stdout = sys.stdout.terminal

 

Posted by uniqueone
,