python中print()在将内容输出到屏幕上的时候,事实上是调用了 sys.stdout.write(obj+'\n')
以下两行在事实上等价
print('hello') = sys.stdout.write('hello'+'\n')
所以下面做的其实是相当于重写sys.stdout的write方法
import sys class Logger(object): def __init__(self, filename="log.txt"): self.terminal = sys.stdout self.log = open(filename, "a") def write(self, message): self.log.write(message) self.terminal.write(message) self.log.flush() #缓冲区的内容及时更新到log文件中 def flush(self): pass sys.stdout = Logger() #之后用print输出的就既在屏幕上,又在log文件里 print(453453) print(453453) print(453453)
def flush 不能省
Python同时输出到屏幕和文件(Logger)(输出重定向)(有用)
于 2021-10-13 21:18:18 首次发布