2011-09-14 54 views
6

我將表格「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」應該從表「mydata2」下面的數據來自「mydata1」的數據以及其間的一些文本被寫入。

注:我願意在數據擴展名爲TXT,但以CSV格式例如出口:

Export["file1.txt", mydata1, "CSV"] 

我已經使用了「PutAppend」,但它這麼想的給我想要的results.Either我沒有正確使用它,也許它不是我的問題的關鍵字。

我有很多關於出口的問題,但我現在不會問這一切,因爲我不想混淆你們所有人。

回答

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 
+0

感謝您的回答,我用你的答案,因爲它符合我的要求 –

10

流是用於這一目的。如果您的目標是在不同的時間生成mydata1mydata2,那麼您可以執行以下操作。首先,讓我們創建一個包含文件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到文件的末尾:

​​

...並再次驗證:

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 
     ... 

如果需要的話,也可以編寫mydata1mydata2到文件在同一時間:

$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選項用於每當我們打開流時間。這是通過流寫入操作禁用任何自動換行插入。如果省略此選項,則會在輸出文件中出現一些不受歡迎的雙倍間距。

+0

嘿感謝您的答案。 –

+0

謝謝WReach。這非常有幫助! –