2011-10-12 534 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