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

Fortran Discussion :

Format pour fichier énorme (> 4 Go)


Sujet :

Fortran

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Format pour fichier énorme (> 4 Go)
    Bonjour
    je suis un débutant en Fortran, j'ai un code qui me parmet d'effectuer un certain calcul et le stocker dans un fichier, j'aimerais bien savoir comment je dois procéder pour stocker ce fichier sous format binaire ou ascii, vu qu'il aura une taille énorme lorsqu'il sera stocké sous format .dat (sa taille dépasse 4Go!!)
    Ce que je fais pour stocker les données est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ..
    open(*,file='vitesse.dat')
    write(*,*) v
    ..
    v ici est la variable à calculer par le code.
    Que dois-je faire pour changer le format du fichier stocké en binaire ou ascii..?
    Merci d'avance

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Une seule écriture de "v" produit un fichier > 4 Go ? On doit donc conclure que le problème est effectivement le format, et non la taille du data lui-même (sinon tu aurais déjà le problème en mémoire).

    Dans ton exemple, tu utilise le format * (list-directed). Ce format est généralement le moins économique en espace.

    La première solution est d'écrire le fichier "unformatted". Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ..
    open(11,file='vitesse.dat',form='unformatted',access='sequential')
    write(11) v
    ..
    (En passant, tu ne devrais pas rediriger le unit * (stdout) vers un fichier par le open(*,...) )

    Pour une sortie ASCII, tu dois utiliser un format explicite, plutôt que le format *. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ..
    open(11,file='vitesse.dat') ! formatted et sequential sont par défaut
    write(11,'(1000f10.6)') v
    ..
    Tu devras adapter le format au contenu réel de v. Compte tenu des dimensions probablement élevées de v, tu dois savoir que le format n'a pas à prévoir tous les éléments de v. Le programme bouclera sur le format en produisant un saut de ligne à chaque itération. Très commode pour imprimer un tableau 2D.

    Dernier point, si le data contient beaucoup de 0, il est possible d'avoir un résultat plus compacte que binaire en produisant un fichier de type CSV dans lequel tu élimines les 0. Cette technique est cependant beaucoup plus lourde en programmation (pour être réellement plus efficace que la sortie binaire).

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/05/2009, 14h43
  2. Réponses: 2
    Dernier message: 31/01/2009, 16h10
  3. Où trouver des documents pour tout ce qui est format de fichier ?
    Par Fresh75 dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 14/07/2007, 17h32
  4. [TEST]Uitlisation de QTP pour formater un fichier Excel
    Par roupougnouf dans le forum Test
    Réponses: 1
    Dernier message: 11/07/2007, 09h19
  5. Quel format de fichier utiliser pour les maps ?
    Par fb57 dans le forum OpenGL
    Réponses: 3
    Dernier message: 23/09/2004, 21h22

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