How to output an expression to an external file in "plain text" format without breaking lines?
Export["test.txt", {a}]
works for me
"Plaintext"
is already the default output form of Export
. The { }
around a
prevents Export
from seeing it as a series of arguments (a
is a list in your example) that each have to be put on its own line.
Original answer
You can stay with Put
using the method I showed here for PutAppend
:
SetOptions[OpenWrite, PageWidth -> Infinity];
a >> tmp
This method is especially useful in the case of PutAppend
because it allows you to maintain a running log file with results of intermediate computations with one expression per line.
UPDATE: a bug introduced in version 10 (fixed in version 11.3)
There is a bug introduced in version 10: SetOptions
no longer affects the behavior of OpenWrite
and OpenAppend
:
SetOptions[OpenWrite, PageWidth -> Infinity];
str = OpenWrite["log.txt"]; Write[str, Table[x, {50}]];
Close[str];
Import["log.txt"] // FullForm
"{x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, \n x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x}"
As one can see, the newline character \n
is embedded despite the fact that OpenWrite
is set to have the PageWidth -> Infinity
option system-wide. A workaround is to explicitly set PageWidth -> Infinity
for the stream:
str = OpenWrite["log.txt", PageWidth -> Infinity];
Write[str, Table[x, {50}]];
Close[str];
Import["log.txt"] // FullForm
DeleteFile["log.txt"]
"{x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x, x}"
Another workaround is to Export
as "Text"
but not directly: direct exporting can corrupt the Mathematica expression. Instead one should explicitly convert the expression into the corresponding InputForm
string as follows:
Export["test.txt", ToString[a, InputForm]]
An alternative is to pre-wrap the expression both by OutputForm
and InputForm
as follows:
Export["test.txt", OutputForm[InputForm[a]]]
Perhaps you could use Export instead of Put?
out = StringReplace[ToString[InputForm[a]], {" " | "\n" -> ""}]
Export["out.txt", out]