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

Discussion :

Ouverture d'un fichier .txt lourd


Sujet :

Scilab

  1. #1
    Membre à l'essai
    Femme Profil pro
    Docteur en Géologie
    Inscrit en
    janvier 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Docteur en Géologie

    Informations forums :
    Inscription : janvier 2014
    Messages : 13
    Points : 15
    Points
    15
    Par défaut Ouverture d'un fichier .txt lourd
    Bonjour,

    J'ai un fichier assez lourd (30 Mo) avec plus de 400 000 lignes de données. J'ai Scilab qui crash quand j'essaie de l'ouvrir. J'entends bien qu'il va mettre du temps à ouvrir ce fichier et à faire les calculs ensuite mais... Je ne pensais pas que Scilab se contenterait carrément de se fermer tout seul.

    Je précise qu'il n'y a aucun soucis sur les lignes de codes qui demandent l'ouverture du fichier puisque que l'ai essayé sur une version (89 Ko) avec 1400 lignes de données et tout était impec'. Est-ce que quelqu'un aurait une astuce pour aider Scilab à gérer l'afflux important de données ? ou alors le problème vient de la mémoire vive du PC qui sature ?

    Voilà !!!! Si quelqu'un peut m'éclairer sur la question

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Ingénieur R&D freelance
    Inscrit en
    novembre 2006
    Messages
    19 991
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur R&D freelance

    Informations forums :
    Inscription : novembre 2006
    Messages : 19 991
    Points : 53 938
    Points
    53 938
    Par défaut
    Montre nous ton code ou explique nous plus en détails ce que fais ton code et les fonctions que tu utilises.
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et 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
    Membre à l'essai
    Femme Profil pro
    Docteur en Géologie
    Inscrit en
    janvier 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Docteur en Géologie

    Informations forums :
    Inscription : janvier 2014
    Messages : 13
    Points : 15
    Points
    15
    Par défaut Code lecture
    Bonjour,
    Comme je dis... le code en temps que tel ne pose aucun soucis si le fichier est coupé et donc moins lourd. Je ne peux pas fournir ledit fichier tout simplement parce que ça concerne ma recherche encore non-publiée et donc... Nope! Pas de partage de fichier de ce point de vu!

    Le code lisant les données donne ceci dit le format

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DataFile=input('Give the path to the file (between inverted commas)')
    fd=mopen(string(DataFile))
    INFOS=mfscanf(1,fd,'%s %s %c %c %s %s %s %s %s %s %s %s %s\n')
    Data=mfscanf(-1,fd,'%lg %s %lg %lg %lg %lg %lg %lg %lg %lg %lg %lg\n')
    mclose(fd)

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Ingénieur R&D freelance
    Inscrit en
    novembre 2006
    Messages
    19 991
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur R&D freelance

    Informations forums :
    Inscription : novembre 2006
    Messages : 19 991
    Points : 53 938
    Points
    53 938
    Par défaut
    As-tu besoin de stocker toutes les données de chaque ligne ?

    Si ce n'est pas le cas, tu peux utiliser * pour ne pas lire les données inutiles. La quantité de mémoire nécessaire au stockage des données sera diminuée.

    Par exemple, pour ne pas lire la première valeur de chaque ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Data=mfscanf(-1,fd,'%*lg %s %lg %lg %lg %lg %lg %lg %lg %lg %lg %lg\n')
    Les calculs peuvent-ils être effectués bloc par bloc ? Si c'est le cas, tu peux lire le fichier par bloc de ligne, ce qui évitera de tout stocker en mémoire.

    Par exemple par bloc de 1000 lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DataFile=input('Give the path to the file (between inverted commas)')
    fd=mopen(string(DataFile))
    INFOS=mfscanf(1,fd,'%s %s %c %c %s %s %s %s %s %s %s %s %s\n')
    while 1
       if meof(fd) then
          break
       end
       Data=mfscanf(1000,fd,'%lg %s %lg %lg %lg %lg %lg %lg %lg %lg %lg %lg\n')
       // Calcul intermédiaire avec les 1000 lignes lues
    end
    mclose(fd)
    Mes compétences :
    • conception mécanique 3D (Autodesk Fusion 360)
    • développement informatique (MATLAB, Python, C, VBA)
    • impression 3D (Ultimaker)
    • programmation de microcontrôleur (Microchip PIC et 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
    Membre à l'essai
    Femme Profil pro
    Docteur en Géologie
    Inscrit en
    janvier 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Docteur en Géologie

    Informations forums :
    Inscription : janvier 2014
    Messages : 13
    Points : 15
    Points
    15
    Par défaut Je vais essayer
    Oh! Oui! Je peux clairement effectuer les calculs qui suivent ensuite par blocs. Je vais juste créer des fonctions pour éviter que ça devienne trop fouillis du coup mais OUI. Je n'avais pas pensé à ces solutions.

    Je vais tester ça de suite. Merci beaucoup !

Discussions similaires

  1. Ouverture de 2 fichier txt.
    Par momolamoto dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/01/2009, 11h13
  2. Macro Excel : ouverture d'un fichier .txt
    Par johannj dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/12/2008, 10h28
  3. Réponses: 9
    Dernier message: 09/06/2008, 15h59
  4. [VBA-E] macro ouverture liste de fichier txt
    Par didi73 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/03/2007, 14h30
  5. [VBA - E] - Ouverture d'un fichier .txt
    Par jimbololo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/06/2006, 13h45

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