Text 将数据和文本导出、追加/前置到文件中(Mathematica)
我正在以CSV格式将表“mydata1”中的数据导出到“file1.dat”中。以下是mathematica代码:Text 将数据和文本导出、追加/前置到文件中(Mathematica),text,append,export,wolfram-mathematica,export-to-csv,Text,Append,Export,Wolfram Mathematica,Export To Csv,我正在以CSV格式将表“mydata1”中的数据导出到“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",my
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"]
我使用了“putpappend”,但它没有给我想要的结果。要么我没有正确地使用它,要么它不是我这类问题的关键字
关于出口,我有很多问题,但我现在不想问所有这些问题,因为我不想把你们都弄糊涂。也许类似于:
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
流在这方面很有用。如果您的目标是在不同的时间生成
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
选项。这是通过流写入操作禁用任何自动换行插入。如果省略此选项,则输出文件中会出现一些不受欢迎的双空格。谢谢您的回答,我使用了您的答案,因为它符合我的要求谢谢。这很有帮助!