2011-09-14 3 views
6

J'exporte des données de la table "mydata1" au format CSV dans "fichier1.dat". Ci-dessous le code Mathematica:Exportation, ajout/ajout de données et de texte dans des fichiers (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"] 

Maintenant, mon "fich1.dat" ressemble à ceci:

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

Maintenant, j'ai un autre ensemble de données de la table "mydata2" (code donné ci-dessous). Je veux pouvoir stocker les données de cette table "mydata2" dans le même dossier "file1.dat" .Mais avant que je fais cela j'ai besoin d'écrire un texte dans le fichier "file1.dat" pour par exemple "Les données ci-dessous sont de mydata2 ".

Notez que les données des deux tables doivent être exportées au format 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]]; 

à la fin de mon fichier de données « fich1.dat » devrait ressembler à ceci

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

Si vous observez le fichier de données final « fich1.dat » devraient avoir des données de la table « mydata2 » ci-dessous les données de "mydata1" et entre il y a du texte écrit.

Note: Je suis prêt à exporter les données avec le TXT d'extension, mais au format CSV Par exemple:

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

J'ai utilisé le « PutAppend » mais il ne marche pas me donner la results.Either désirée Je ne l'utilise pas correctement ou peut-être que ce n'est pas le mot clé pour mon genre de problème.

J'ai beaucoup de questions concernant l'exportation mais je ne vous demanderais pas tout cela maintenant que je ne veux pas vous embrouiller tous.

Répondre

3

Peut-être quelque chose comme:

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

Le fichier résultant est:

* 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

Merci pour la réponse, j'ai utilisé votre réponse, car il répondait à mes exigences –

10

cours d'eau sont utiles à cet effet. Si votre objectif est de générer mydata1 et mydata2 à des moments différents, vous pouvez procéder comme suit. Tout d'abord, nous allons créer le fichier contenant mydata1:

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

Nous pouvons vérifier le contenu du fichier en utilisant Import:

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

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

Maintenant, nous allons append mydata2 à la fin du fichier:

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

... et encore, vérifiez:

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

Si vous le souhaitez, il est également possible d'écrire mydata1 et mydata2 dans le fichier en même temps:

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

Notez que l'option BinaryFormat -> True est utilisé chaque fois que nous ouvrons le flux.Ceci permet de désactiver toute insertion automatique de retour à la ligne par les opérations d'écriture de flux. Si cette option est omise, un double espacement indésirable se produit dans le fichier de sortie.

+0

Hey Merci pour la réponse. –

+0

Merci WReach. C'était très utile! –

Questions connexes