我将数据从表格“mydata1”以CSV格式导出到“file1.dat”。以下是mathematica代码:
mydata1=TableForm[Flatten[
Table[Table[Table[
{xcord, ycord, zcord}, {xcord, 0,50,10}],
{ycord,0,50,10}], {zcord, 50, 100, 10}], 2]];
Export["file1.dat",mydata1,"CSV"]
现在我的“file1.dat”看起来像这样:
0,0,50
10,0,50
20,0,50
..
.. and so on
现在我从表“mydata2”(下面给出的代码)中得到了另一组数据。我希望能够将这个表“mydata2”中的数据存储到同一个文件“file1.dat”中。但是在我这样做之前我需要在文件“file1.dat”中写一个文本,例如“下面的数据来自mydata2”。
请注意,两个表格中的数据都需要以CSV格式导出。
mycounter=20
mydata2=TableForm[Flatten[
Table[Table[Table[
{++mycounter,xcord, ycord, zcord}, {xcord, 0,50,10}],
{ycord,0,50,10}], {zcord, 50, 100, 10}], 2]];
最后我的数据文件“file1.dat”应该如下所示
*Data from data from mydata1
0,0,50
10,0,50
20,0,50
... and so on
*Below data from mydata2
21,0,0,50
22,10,0,50
23,20,0,50
... and so on.
如果你观察到最终的数据文件“file1.dat”应该有来自“mydata1”的数据下面的表“mydata2”,并且之间有一些文字。
注意:我愿意使用扩展名TXT导出数据但以CSV格式导出例如:
Export["file1.txt", mydata1, "CSV"]
我已经使用了“PutAppend”,但它没有给我想要的结果。要么我没有正确使用它,要么它不是我的问题的关键字。
我对出口有很多疑问,但我现在不会问这一切,因为我不想把你们全部搞糊涂。
答案 0 :(得分:11)
Streams可用于此目的。如果您的目标是在不同时间生成mydata1
和mydata2
,那么您可以执行以下操作。首先,让我们创建包含mydata1
的文件:
$stream = OpenWrite["file.dat", BinaryFormat -> True];
WriteString[$stream, "*Data from data from mydata1\n"]
Export[$stream, mydata1, "CSV"]
WriteString[$stream, "\n"]
Close[$stream]
我们可以使用Import
验证文件的内容:
In[10]:= Import["file.dat", "Text"]
Out[10]= *Data from data from mydata1
0,0,50
10,0,50
20,0,50
...
现在,让我们将mydata2
追加到文件的末尾:
$stream = OpenAppend["file.dat", BinaryFormat -> True];
WriteString[$stream, "*Below data from mydata2\n"]
Export[$stream, mydata2, "CSV"]
WriteString[$stream, "\n"]
Close[$stream]
......再次验证:
In[20]:= Import["file.dat", "Text"]
Out[20]= *Data from data from mydata1
0,0,50
10,0,50
20,0,50
...
*Below data from mydata2
21,0,0,50
22,10,0,50
23,20,0,50
...
如果需要,还可以同时将mydata1
和mydata2
写入文件:
$stream = OpenWrite["file.dat", BinaryFormat -> True];
WriteString[$stream, "*Data from data from mydata1\n"]
Export[$stream, mydata1, "CSV"]
WriteString[$stream, "\n*Below data from mydata2\n"]
Export[$stream, mydata2, "CSV"]
WriteString[$stream, "\n"]
Close[$stream]
请注意,每次打开流时都会使用BinaryFormat -> True
选项。这是通过流写入操作禁用任何自动换行。如果省略此选项,则输出文件中会出现一些不受欢迎的双倍间距。
答案 1 :(得分:3)
也许是这样的:
mydata1 =
Flatten[Table[Table[Table[
{xcord, ycord, zcord},
{xcord, 0, 20, 10}], {ycord, 0, 20, 10}], {zcord, 50, 50, 10}], 2];
mycounter = 20
mydata2 =
Flatten[Table[Table[Table[
{++mycounter, xcord, ycord, zcord},
{xcord, 0, 20, 10}], {ycord, 0, 20, 10}], {zcord, 50, 50, 10}], 2];
Export["c:\\test.txt",
Join[{"* data1 follows"}, mydata1, {"* data2 follows"}, mydata2], "CSV"]
生成的文件是:
* data1 follows
0,0,50
10,0,50
20,0,50
0,10,50
10,10,50
20,10,50
0,20,50
10,20,50
20,20,50
* data2 follows
21,0,0,50
22,10,0,50
23,20,0,50
24,0,10,50
25,10,10,50
26,20,10,50
27,0,20,50
28,10,20,50
29,20,20,50