Wolfram mathematica 不使用导出将向量写入文件

Wolfram mathematica 不使用导出将向量写入文件,wolfram-mathematica,Wolfram Mathematica,我感兴趣的是将多个向量写入一个文件,使每个向量在文件中形成一行,并在生成后立即写入文件。向量的元素需要用一个空格分隔,我不想包含向量的{}括号。基本上,我想模拟C的fprintf(“文件”,“f%f%f\n”)功能 这是我的。有更好的方法吗 st1 = OpenWrite["C:\\junk\\mu.out", FormatType -> OutputForm]; vt = Table[ v = RandomReal[{0, 1}, 5]; For[j = 1, j <

我感兴趣的是将多个向量写入一个文件,使每个向量在文件中形成一行,并在生成后立即写入文件。向量的元素需要用一个空格分隔,我不想包含向量的
{}
括号。基本上,我想模拟C的
fprintf(“文件”,“f%f%f\n”)
功能

这是我的。有更好的方法吗

st1 = OpenWrite["C:\\junk\\mu.out", FormatType -> OutputForm];

vt = Table[
   v = RandomReal[{0, 1}, 5];

   For[j = 1, j <= Length[v], j++, 
    WriteString[
     st1, 
     SequenceForm[NumberForm[v[[j]], ExponentFunction -> (Null &)], 
      " "]
     ]
    ];
   Write[st1, ""];
   v,
   {200}
   ];

In[3]:= Close[st1]

Out[3]= "C:\\junk\\mu.out"
也许是这个

WriteVector[stream_, vector_] :=
  WriteString[stream, ##, "\n"] & @@ Riffle[vector, " "]
以及:

然后:

并检查:

FilePrint[fname]
完成后关闭流:

Close[fname]

你如何更好地定义?更快?使用更少的内存?更优雅?更短?@acl:我想是一种更优雅、更实用的方法,我想知道,是否可以保证即使最后不调用
Close[stream]
也能将所有内容写入文件?(当然不是。)@Szabolcs,我不知道。我倾向于将代码打包以消除资源泄漏。@Szabolcs——WriteString在求值期间刷新其流。
Do[WriteVector[fname, RandomReal[{0, 1}, 5]],{10}]
FilePrint[fname]
Close[fname]