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 :

lecture fichier texte


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Par défaut lecture fichier texte
    Bonjour,
    Je dois lire un fichier texte mais uniquement certaines valeurs pas forcement rangées comme il me le faudrait... Le fichier contient pour une echeance trois parametres sur differents niveaux de pressions et grille longitude-latitude (pour ca je m'arrange avec des boucles)

    Echeance 2006 1 1 0
    Parameter T
    Unit K
    Level 1.0 hPa
    grid longitude 144 0.000 2.500
    grid latitude 73 -90.000 2.500
    292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71
    292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71
    292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71
    292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71
    292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71
    292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71
    292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71
    292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71
    292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71
    292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71
    292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71
    292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71
    292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71
    292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71 292.71
    292.71 292.71 292.71 292.71
    Par contre, j'aimerais "sauter" les 5 premieres lignes qui apparaissent à chaque bloque. il me semble qu'avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1000	format(/////)
    read(1,1000)
    ca aurait du fonctionner mais je n'ai pas trouvé de doc sur ce sujet....apres j'aimerais bien savoir si juste avec un (nx etant le nombre de blocs de 15lignes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1100   format(10f7.2)
    read(1,1100)(ul(ix,iy,ip),ix=1,nx)
    la lecture des blocs se fera correctement.

    D'avance merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Par défaut
    Je vois Six lignes de commentaires !

    Le format 1100 permet de lire 10 valeurs sur une ligne. J'aurais écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    do k=1,6
        read(1,*)
    end do
     
    nx =10
    ny=15
    np=3
    do ip = 1,np
         do iy=1,ny
            read(1,*) (ul(ix,iy,ip),ix=1,nx)
         end do
    end do
    en utilisant le format libre, qui est très efficace à la lecture.

  3. #3
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Par défaut
    Bonjour,

    Merci de votre message et effectivement, 6 lignes de commentaires...

    Voici le code (et qui jusqu'à present fonctionnait parfaitement) que j'ai utilisé avec les valeurs utilisées concrètement pour le bon "remplissage" de ma matrice en longitude/latitude/niveaux de pression (144x73x17) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    parameter (np=17,nx=144,ny=73)
     
    nj=15
    	do ip=np,1,-1
    	 	do k=1,6
        			read(1,*)
    		end do
     
    		do iy = 1,ny
    		     debi=1
    		     do ili=1,nj
    				if (ili < 15) then
           				read(1,*) (tl(ix,iy,ip),ix=debi,debi+9)
    					debi=debi+10 
    				elseif (ili == 15) then 				
    					read(1,*) (tl(ix,iy,ip),ix=debi,debi+3) 
    				endif
    		     end do
    		end do
    	enddo
    Par contre, j'ai à present un souci, et je penses que cela peut provenir de l'emploi du format libre. Lorsqu'une valeur lue utilise tout l'espace affecté (par espace affecté, j'entends qu'il n'y a plus d'espace separateur entre deux valeurs consecutives, comme par exemple: 86.02-120.0793.5) il saute le nombre de valeurs non separées.

    Merci de votre aide bien utile car je developpe ce code conjointement à ma tache habituelle sous matlab.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Par défaut
    Dans ton cas il faut utiliser une lecture formatée, comme c'est le cas dans l'ordre
    du début de la discussion. Le format dit que chaque valeur est inscrite sur 7 caractères, avec deux caractères après le point (info pas utilisée à la lecture).

    La première chose à faire est de repérer la structure de ton fichier. C'est grosso modo à quelle colonne commence chaque valeur. Si il y a une structure qui se répète, alors la lecture automatique est possible.

    Sinon regarder si le nombre de chiffres après le point forme une structure qui se répète. Si ce n'est pas le cas, c'est désespéré.

  5. #5
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 89
    Par défaut
    Effectivement, ca fonctionne avec le format specifique, que j'avais dejà essayé d'ailleurs... j'ai du me planter de colonne ....

    Merci pour ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lecture fichier texte
    Par vince-60 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/04/2006, 14h15
  2. [VB]Probleme lecture fichier text et affichage
    Par clochardevobsy dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/03/2006, 08h46
  3. lecture fichier texte et ...
    Par Nils30 dans le forum Langage
    Réponses: 5
    Dernier message: 12/01/2006, 11h55
  4. lecture fichier text et renvoi du contenu en byte *
    Par JulienT dans le forum Réseau
    Réponses: 3
    Dernier message: 02/01/2006, 13h21
  5. Lecture fichier text
    Par krfa1 dans le forum ASP
    Réponses: 13
    Dernier message: 25/11/2005, 08h00

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