Scilab : Soucis avec les fonctions de traitement de fichiers

Messages : 0

Inscription : 23 févr. 2016 16:50

Profil de l'utilisateur : Élève de lycée

Scilab : Soucis avec les fonctions de traitement de fichiers

Message par dartakham » 06 avr. 2016 03:28

Bonjour,

On me demande des tâches à réaliser sur Scilab et j'ai un peu de mal.
1) Je dois lire un texte d'un endroit et l'écrire avec scilab dans un fichier dont on me donne le nom
2) Puis une fois que j'ai fait ca, reprendre le fichier et écrire dans la console des lignes du fichier

Je dispose des spécifications suivantes :

[unit [,err]]=file('open', file-name [,status] [,access [,recl]] [,format])
allows to open a file with specified properties and to get the associated unit number unit.

file-name :
string, file name of the file to be opened
status :
string, the status of the file to be opened
"new"
file must not exist new file (default)
"old"
file must already exists.
"unknown"
unknown status
"scratch"
file is to be deleted at end of session

file(action,unit)
allows to close the file , or move the current file pointer. action : is one of the following strings :
"close": closes the file(s) given by the logical unit descriptors given in units;
"rewind": puts the pointer at beginning of file;
"backspace": puts the pointer at beginning of last record;
"last": puts the pointer after last record.

[x] = read(file-desc,m,n,[format])
reads row after row the mxn matrix x (n=1 for character chain) in the file file-desc (string or integer). Each row of the matrix x begin in a new line of file-desc file. Depending on format, a given row of the x matrix may be read from more than one line of file-desc file.

write(file-desc,a,[format])
writes row-by-row a real matrix or a column vector of character strings in a for- matted file. Each row of the a argument begin in a new line of file-desc file. Depending on format a given row of thea argument may be written in more than one line of file-desc file.
J'ai du mal avec les options entre crochets, savoir quand les utiliser ou non. En fait ce qui me perturbe c'est que ce sont des fonctions assez complexes avec plein d'arguments, dont certains qui sont des arguments par défaut.

Je vous donne ce que une brève ébauche de ce que j'ai tenté pour la 1)
[unit] = file('open',"nomdemonfichier" [txt])
while (True)
write("nomdemonfichier",blablabla (texte que l'on me donne),[txt])
end
En effet je peux arrêter le programme quand je veux pour ca que je lance une boucle infinie.
Pouvez-vous juste m'aider concernant l'utilisation de la fonction unit (si c'est bien une fonction) et write si je l'utilise correctement ?

Je vous remercie beaucoup !

Messages : 9686

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Scilab : Soucis avec les fonctions de traitement de fich

Message par fakbill » 07 avr. 2016 16:45

qui fait du scilab?
je ne connais pas trop ce langage et je ne veux pas le connaitre tellement il est moche MAIS quand je lis
[unit [,err]]=file('open', file-name [,status] [,access [,recl]] [,format])
je vois que unit n'est pas une fonction mais un unit number. vas voir dans l'aide ce que c'est....

les argu entre [] sont optionnels...c'est À dire que, si tu ne les mets pas, la fonction va faire qqch (ca ne va pas déclencher une erreur du type "un argu est manquant") et la valeur de l'argu non préciser sera une valeur par défaut (cf la doc)
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 0

Inscription : 23 févr. 2016 16:50

Profil de l'utilisateur : Élève de lycée

Re: Scilab : Soucis avec les fonctions de traitement de fich

Message par dartakham » 12 avr. 2016 00:48

[unit [,err]]=file("open", file-name [,status] [,access [,recl]][,format])
allows to open a file with specified properties and to get the associated unit number unit. This unit number may be used for further actions on this file or as file descriptor in read, write, readb, writb,save, load function calls.
Je vous remercie grandement pour votre réponse !

Je suis allé voir dans la doc et du coup ca m'a l'air d'être un nombre associé à un fichier, et on utilise le nombre une fois que celui-ci est associé pour utiliser les autres fonctions.

La doc propose même une fonction toute faite donc je l'ai entré dans ma console scilab
u=file("open",TMPDIR+"/foo","unknown")
for k=1:4
a=rand(1,4)
write(u,a)
end
file("rewind",u)
x=read(u,2,4)
file("close",u)
//
u1=file("open",TMPDIR+"/foo","unknown")
u2=mopen(TMPDIR+"/foo1","wb")
[units,typs,nams]=file()
file("close",u1);
mclose(u2);
Et ca me crée un fichier foo où ca écrit dedans.
Du coup parfait vu que dans mon exercice je veux chercher à écrire dans un fichier, sauf que j'utilise la même commande à savoir
u=file("open","exemple")

J'obtiens un chiffre pour u et je fais write(u,a) mais là problème : mon fichier exemple se crée mais ca n'écrit pas dedans.

Avez-vous une idée de où je bloque ? Je vous remercie par avance.

Messages : 0

Inscription : 23 févr. 2016 16:50

Profil de l'utilisateur : Élève de lycée

Re: Scilab : Soucis avec les fonctions de traitement de fich

Message par dartakham » 23 avr. 2016 02:47

Quelqu'un aurait une idée svp ?

Répondre