2011-10-12 533 views
13

我有一個大型的Mathematica筆記本,它定期使用Print[]命令來輸出運行時消息。這是筆記本生成的唯一輸出(除了導出的文件)。有什麼辦法可以自動將輸出導出到.txt文件,而無需重新編寫Print[]命令?導出Mathematica打印[]輸出到.txt文件

回答

2

您需要PutAppend命令。

+1

這是行得通的,但不符合OP的要求,不必更改所有的'Print'語句。看到我的[解決方案](http://stackoverflow.com/questions/7741432/exporting-mathematica-print-output-to-a-txt-file/7741627#7741627)。 – rcollyer

15

根據documentation,Print輸出到$Output渠道,這是一個流列表。所以,在筆記本的開始,

strm = OpenWrite["output.log"]; 
AppendTo[ $Output, strm ]; 

,並在筆記本

Close[strm]; 

注意,結束時,如果執行之前關閉流中斷,那麼你就必須這樣做手動。此外,上述代碼將覆蓋「output.log」中的先前數據,因此您可能希望使用OpenAppend

編輯:要保證Abort將被調用,請考慮使用here中概述的技術之一。

+0

不錯!我發佈了一個更復雜的'Print'重定義,但這個顯然更好。它有時會閱讀文檔有時:) +1 –

+0

@LeonidShifrin,我看到你的,並將評論贏得簡單的比賽。但是,你通過刪除它來擊敗我。 :( – rcollyer

+2

@LeonidShifrin你不應該刪除的答案。有一個替代的解決方案是一件好事,因爲它展示瞭如何在同一任務可以在數學不同的方式來實現。此外,如果確實OP確實要重新定義'Print'別的東西,你的回答將作爲一個模板。 – abcd