Les fichiers ASCII ne sont pas directement lisibles par MAPLE. En fait, pour qu'un fichier ASCII soit utilisable, il faut qu'il soit à la syntaxe MAPLE, c'est-à-dire qu'il soit une suite de commandes et d'affectations séparées par des point-virgules.
ou bien, s'il n'est pas ennuyeux d'avoir un élément en trop:
readdata
est très utile pour charger des
données numériques dans MAPLE. Le type des valeurs retournées par
readdata
est la liste de listes (listlist
). On peut
convertir ce type d'objet en vecteur, en matrice, ou en tableau.
Supposons que le fichier de
données foo.dat
se présente sous la forme suivante:
Alors, on peut obtenir un vecteur ou une matrice (et de façon plus générale un tableau) par les instructions suivantes:
> readlib(readdata); > v1 := convert(readdata(`foo.dat`,integer,1),vector); v1 := [ 12, 78, 89, 80, 31 ] > A := convert(readdata(`foo.dat`,1),array); [ 12. 4. 54. ] [ ] [ 78. 32. 22. ] [ ] A := [ 89. -56. 76. ] [ ] [ 80. -4. -7. ] [ ] [ 31. 59. 98. ]
readline(filename)
renvoie une chaîne de caractères correspondant à la ligne lue
dans le fichier filename
, et 0 en fin de fichier. Nous vous
renvoyons à la documentation en ligne obtenue avec ? sscanf
et
à la documentation de la fonction fscanf
en C. Voici cependant un
petit exemple d'utilisation qui consiste à faire la somme des deux
premières colonnes du fichier foo.dat
:
total1 := 0.0: total2 := 0.0: line := readline(`foo.dat`): while line <> 0 do temp := sscanf(",`%f %f`): total1 := total1 + temp[1]: total2 := total2 + temp[2]: line := readline(`foo.dat`): od: print(`TOTALS: `,total1,total2); -> TOTALS: , 290., 35.
Pour sauvegarder des fichiers ASCII, de deux choses l'une:
writeto
, par exemple de la façon suivante:
printtofile := proc(filename, data) local f; writeto(filename); for f in data do lprint(f) od; writeto(terminal); end: