2011-10-12 32 views
13

Tengo un gran cuaderno de Mathematica que usa Print[] comandos periódicamente para dar salida a los mensajes de tiempo de ejecución. Esta es la única salida (aparte de los archivos exportados) que genera este portátil. ¿Hay alguna forma de que pueda automatizar la exportación de esta salida a un archivo .txt sin tener que volver a escribir los comandos Print[]?Exportación de Mathematica Imprimir [] Salida a un archivo .txt

Respuesta

2

Desea el comando PutAppend.

+1

Eso funciona, pero no cumple con los requisitos de OP para no tener que cambiar todas sus declaraciones de 'Imprimir'. Ver mi [solución] (http://stackoverflow.com/questions/7741432/exporting-mathematica-print-output-to-a-txt-file/7741627#7741627). – rcollyer

15

Según las salidas documentation, Print al canal $Output que es una lista de transmisiones. Así, al comienzo de la portátil,

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

y al final de la portátil

Close[strm]; 

Nota, si la ejecución se interrumpe antes del cierre de la corriente, entonces usted tiene que hacerlo a mano. Además, el código anterior sobrescribirá los datos anteriores en "output.log", por lo que es posible que desee utilizar OpenAppend, en su lugar.

Editar: garantizar que Abort serán llamados, considerar el uso de una de las técnicas descritas here.

+0

¡Agradable! Publiqué uno más complejo con redefiniciones de 'Imprimir', pero este es claramente mejor. Vale la pena leer los documentos a veces :) +1 –

+0

@LeonidShifrin, vi el tuyo e iba a comentar sobre cómo ganar el juego de simplicidad. Pero, me ganaste al eliminarlo. :( – rcollyer

+2

@LeonidShifrin No debe eliminar la respuesta. Tener una solución alternativa siempre es buena, ya que muestra cómo se puede lograr la misma tarea de diferentes maneras en Mathematica. Además, si el OP de hecho quería redefinir 'Imprimir' para otra cosa, tu respuesta serviría como plantilla. – abcd

Cuestiones relacionadas