8
我需要將所有打印語句輸出到終端和文件。 我發現在this stackoverflow question 一個解決方案所以我用無法將stdout恢復到原始狀態(僅限於終端)
class Tee(object):
def __init__(self, name):
self.file = open(name, "a")
self.stdout = sys.stdout
sys.stdout = self
def __del__(self):
sys.stdout = self.stdout
self.file.close()
def write(self, data):
self.file.write(data)
self.stdout.write(data)
sys.stdout = Tee("log.txt")
這就是偉大工程,
我的問題是,當我想停止寫入文件,並返回到正常的操作,是隻打印到終端
我試圖用del(sys.stdout)來調用del方法,但沒有運氣。
我甚至試圖最後一行改爲:
multiple_print = Tee("log.txt")
sys.stdout = multiple_print
,比使用德爾(multiple_print)和失敗的
不管我試過,打印的進一步用途仍被寫入終端和文件都。
任何想法?
感謝。我試圖讓複雜的解決方案工作,忘記了基本。但是,你知道__del__爲什麼不起作用嗎? (它包含保存在__init__部分中的sys.stdout = self.stdout) – 2012-01-08 11:52:56
請注意,您也可以使用[sys .__ stdout__](http://docs.python.org/library/sys.html#sys.__stdout__)而不是自己存儲舊的參考。 – 2012-01-08 11:53:17
我更新了我的答案以解決您的後續問題!而弗雷德裏克哈米迪有一個點!我不知道'sys .__ stdout__'! – 2012-01-08 11:56:08