2011-10-12 12 views
13

Ho un grande quaderno Mathematica che utilizza Print[] comandi periodicamente messaggi di runtime di uscita. Questo è l'unico output (a parte i file esportati) generato da questo notebook. Esiste un modo per automatizzare l'esportazione di questo output in un file .txt senza dover riscrivere i comandi Print[]?Esportazione Mathematica Stampa [] output in un file .txt

risposta

2

Si desidera il comando PutAppend.

+1

Questo funziona, ma non soddisfa i requisiti OP per non dover modificare tutte le sue istruzioni 'Stampa'. Vedi la mia [soluzione] (http://stackoverflow.com/questions/7741432/exporting-mathematica-print-output-to-a-txt-file/7741627#7741627). – rcollyer

15

Secondo le documentation, Print uscite al canale $Output che è un elenco di flussi. Così, all'inizio del notebook,

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

e alla fine del notebook

Close[strm]; 

nota, se l'esecuzione viene interrotta prima di chiudere il flusso, allora dovrete farlo manualmente. Inoltre, il codice sopra sovrascriverà i dati precedenti in "output.log", quindi potresti voler utilizzare OpenAppend.

Edit: per garantire che si chiamerà Abort, considerare l'utilizzo di una delle tecniche descritte here.

+0

Bello! Ho pubblicato uno più complesso con ridefinizioni di 'Stampa', ma questo è chiaramente migliore. Vale la pena leggere i documenti a volte :) +1 –

+0

@LeonidShifrin, ho visto il tuo, e stavo per commentare vincere il gioco della semplicità. Ma mi hai battuto eliminandolo. :( – rcollyer

+2

@LeonidShifrin Non dovresti eliminare la risposta Avere una soluzione alternativa è sempre buona, poiché mostra come lo stesso compito può essere raggiunto in modi diversi in Mathematica. Inoltre, se l'OP volesse davvero ridefinire 'Stampa' per qualcos'altro, la tua risposta servirebbe da modello – abcd