将Mathematica Print []输出导出为.txt文件

par*_*x09 16 file-io wolfram-mathematica

我有一个大型的Mathematica笔记本,它Print[]定期使用命令输出运行时消息.这是此笔记本生成的唯一输出(除了导出的文件).有没有什么办法可以自动将此输出导出到.txt文件而无需重新编写Print[]命令?

rco*_*yer 17

根据文档,Print输出到$Output通道,这是一个流列表.所以,在笔记本的开头,

strm = OpenWrite["output.log"];
AppendTo[ $Output, strm ];
Run Code Online (Sandbox Code Playgroud)

并在笔记本的末尾

Close[strm];
Run Code Online (Sandbox Code Playgroud)

请注意,如果在关闭流之前执行被中断,那么您必须手动执行.此外,上面的代码将覆盖"output.log"中的先前数据,因此您可能希望使用OpenAppend.

编辑:为了保证Abort将被调用,请考虑使用此处概述的技术之一.

  • @Leonid,我很震惊你不知道这个.我猜你毕竟不是Mathematica专家组成的联盟.;-) (3认同)
  • @LeonidShifrin你不应该删除答案.有一个替代解决方案总是好的,因为它显示了如何在Mathematica中以不同的方式实现相同的任务.此外,如果OP确实想要重新定义"打印"以获取其他内容,那么您的答案将作为模板. (2认同)

cah*_*cah 2

您需要 PutAppend 命令。