IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scilab Discussion :

Soucis avec les fonctions de traitement de fichiers


Sujet :

Scilab

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Soucis avec les fonctions de traitement de fichiers
    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)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [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 !


    EDIT :

    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Montre nous le code que tu as écris.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    J'ai entré la fonction toute prête que me propose la doc et en utilisant la console je retrouve bien écrit dans le fichier foo les nombres aléatoires entre 0 et 1.

    Je tente donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    u=file("open",TMPDIR+"/fo","unknown")
     u  =
     
        1.  
     
    write(u,78)
     
    write(u,a)
    Et j'ai beau vérifier dans le fichier fo qui se crée, il n'y a rien dedans.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Fermes-tu proprement le fichier à la fin du code ?

    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Je te remercie beaucoup ! En fermant le fichier cela a bien écrit dedans. Je n'aurais pas cru que le fait de fermer Scilab sans fermer le fichier au préalable supprimerait tout.

    Sais-tu pourquoi les fichiers sont temporaires par contre ? En gros foo et foo1 se sont supprimés entre tout à l'heure et maintenant que je viens de refaire la manipulation.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    La constante TMPDIR contient le chemin du répertoire temporaire d'un processus Scilab. Chaque processus Scilab a son propre répertoire temporaire, créé lors du démarrage de Scilab puis référencé dans TMPDIR. Ce répertoire temporaire est supprimé lors de l'arrêt de Scilab.
    => TMPDIR - chemin du répertoire temporaire
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

Discussions similaires

  1. [Forum] Souci avec les fonctions PHP
    Par LAMASPANZER dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 11/10/2014, 02h01
  2. [suphp] Souci avec les droits des fichiers
    Par Blount dans le forum Apache
    Réponses: 2
    Dernier message: 04/01/2009, 19h41
  3. Réponses: 1
    Dernier message: 04/06/2008, 15h59
  4. Réponses: 2
    Dernier message: 10/05/2005, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo