2011-09-14 20 views
6

"mydata1" tablosundan bir CSV biçimindeki verileri "file1.dat" dosyasına veriyorum. (Kod aşağıda verilmiştir) Şimdi tablo "mydata2" verilerine başka bir set varVerme, Verileri ve dosyaları metin içine ekleme/hazırlama (Mathematica)

0,0,50 
10,0,50 
20,0,50 
.. 
.. and so on 

:

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"] 

Şimdi benim "file1.dat" şuna benzer: Aşağıda mathematica kodudur. "Mydata2" tablosundaki verileri "file1.dat" dosyasına kaydedebilmek istiyorum. Fakat bunu yapmadan önce "file1.dat" dosyasında bir metin yazmam gerekiyor, örneğin "Aşağıdaki veriler mydata2'den geliyor ".

Her iki tablonun da CSV biçiminde dışa aktarılması gereken her iki veriyi de not edin. Sonunda

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]]; 

tablosu "mydata2" verileri sahip olmalıdır "file1.dat" Aşağıda son veri dosyası gözlemlerseniz "file1.dat" benim veri dosyası bu

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

gibi görünmelidir "mydata1" in verileri ve aralarında bazı metinler yazılır.

Not: Ben uzatma TXT ile ancak Örneğin CSV formatında veri ihraç razıyım: Ben "PutAppend" kullandık

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

ama bana istenen results.Either vermek doesnt Düzgün kullanmıyorum ya da belki de benim sorunumun anahtar kelimesi değil.

Dışa aktarma konusunda birçok sorum var ama hepinizi karıştırmak istemediğim için bunların hepsini istemezdim.

cevap

3

Belki gibi bir şey:

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"] 

çıkan dosyasıdır:

* 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

Cevabınız için teşekkür ederiz, cevabımı kullandığımdan beri kullanmış oldum –

10

Akışları bu amaç için yararlıdır. Amacınız farklı zamanlarda mydata1 ve mydata2 oluşturmaksa, aşağıdakileri yapabilirsiniz. İlk olarak, içeren dosyayı yapalım mydata1:

$stream = OpenWrite["file.dat", BinaryFormat -> True]; 
WriteString[$stream, "*Data from data from mydata1\n"] 
Export[$stream, mydata1, "CSV"] 
WriteString[$stream, "\n"] 
Close[$stream] 

Biz Import kullanarak dosyanın içeriğini doğrulamak:

$stream = OpenAppend["file.dat", BinaryFormat -> True]; 
WriteString[$stream, "*Below data from mydata2\n"] 
Export[$stream, mydata2, "CSV"] 
WriteString[$stream, "\n"] 
Close[$stream] 
:

In[10]:= Import["file.dat", "Text"] 

Out[10]= *Data from data from mydata1 
     0,0,50 
     10,0,50 
     20,0,50 
     ... 

Şimdi, dosyanın sonuna mydata2 ekleme izin

... ve yine, doğrulayın:

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

, aynı anda dosya içine mydata1 ve mydata2 yazmak da mümkündür: BinaryFormat -> True seçenek biz akışını her açtığınızda kullanılır

$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] 

Not söyledi.Bu, akış yazma işlemleriyle otomatik yeni satır eklemeyi devre dışı bırakmaktır. Bu seçenek atlanırsa, çıktı dosyasında istenmeyen birkaç çift boşluk oluşur.

+0

Hey Cevabınız için teşekkürler. –

+0

Teşekkürler WReach. Bu çok yardımcı oldu! –