python將控制台輸出保存到文件
在平時工作中,有時我們需要將控制台輸出保存到文件
1.命令行用>覆蓋寫入和>>追加寫入

for i in range(10000): print(i)
#將控制台輸出覆蓋寫入到文件
python myprint.py > myprint.txt
#將控制台輸出追加寫入到文件
python myprint.py >> myprint.txt
2.將sys.stdout輸出到文件

import sys import time f=open("myprint.txt","w+") sys.stdout=f for i in range(1000): print(i*9)
缺點:只能保存到文件,但控制台無輸出
3.利用print函數中的file參數

import sys import time f=open("myprint.txt","w+") for i in range(100): print("--{}--".format(i**2),file=f,flush=True) print("--{}--".format(i ** 2),file=sys.stdout) time.sleep(0.5)
將控制台輸出的同時即時保存到文件
print函數中的file參數,file=f,輸出到文件;file=sys.stdout,輸出到終端;flush=True,即時刷新
4.用類實現

import sys class Logger(object): def __init__(self, filename='default.log', stream=sys.stdout): self.terminal = stream self.log = open(filename, 'a') def write(self, message): self.terminal.write(message) self.log.write(message) def flush(self): pass sys.stdout = Logger(stream=sys.stdout) # now it works print('print something') print("output")