2011-09-14 14 views
6

में डेटा और टेक्स्ट को निर्यात, संलग्न/तैयार करना, मैं "mydata1" तालिका से डेटा को "file1.dat" में CSV प्रारूप में निर्यात कर रहा हूं। (कोड नीचे दिए गए) अब मैं टेबल "mydata2" से डेटा का एक और सेट हैफाइलों (गणित)

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

अब मेरी "file1.dat" इस तरह दिखता है: नीचे mathematica कोड है। मैं इस तालिका से "mydata2" को उसी फ़ाइल में "file1.dat" में डेटा स्टोर करने में सक्षम होना चाहता हूं। लेकिन इससे पहले कि मुझे ऐसा करने से पहले मुझे फ़ाइल "file1.dat" में एक टेक्स्ट लिखना होगा, उदाहरण के लिए "नीचे दिए गए डेटा mydata2 से हैं "।

नोट दोनों सीएसवी प्रारूप में निर्यात करने के लिए आवश्यक दोनों तालिकाओं से डेटा दोनों नोट करें।

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 साथ लेकिन उदाहरण के लिए सीएसवी प्रारूप में डेटा निर्यात करने के लिए तैयार हूँ:

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

मैं "PutAppend" का इस्तेमाल किया है, लेकिन यह मुझे वांछित results.Either देना dosen't मैं इसे ठीक से उपयोग नहीं कर रहा हूं या शायद यह मेरी तरह की समस्या का कीवर्ड नहीं है।

निर्यात के संबंध में मेरे पास बहुत सारे प्रश्न हैं लेकिन मैं अब यह सब नहीं पूछूंगा क्योंकि मैं आपको सभी को भ्रमित नहीं करना चाहता हूं।

उत्तर

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

स्ट्रीम इस उद्देश्य के लिए उपयोगी होते हैं। यदि आपका लक्ष्य अलग-अलग समय पर 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 का उपयोग कर फ़ाइल की सामग्री को सत्यापित कर सकते हैं:

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

, फाइल के अंत तक 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 
     ... 

ज़रूरत पड़ने पर, यह भी संभव है एक ही समय में फ़ाइल में 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 विकल्प हर बार जब हम स्ट्रीम को खोलने प्रयोग किया जाता है।यह स्ट्रीम लिखने के संचालन द्वारा किसी भी स्वचालित न्यूलाइन सम्मिलन को अक्षम करना है। यदि यह विकल्प छोड़ा गया है, तो आउटपुट फ़ाइल में कुछ अनचाहे डबल-स्पेसिंग होता है।

+0

उत्तर के लिए धन्यवाद। –

+0

धन्यवाद WReach। यह बहुत उपयोगी था! –