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 :

afficher le contenu d'un dossier spécifié par un index de boucle sur fortran


Sujet :

Fortran

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 2
    Points
    2
    Par défaut afficher le contenu d'un dossier spécifié par un index de boucle sur fortran
    Bonjour,

    J'aurai besoins d'un coup de main pour le problème suivant:

    je travaille sur un jeu de donnée d'un modèle numérique de prévision météo dont la nomenclature est la suivante:

    sub_gfsanl_4_2011MMDD-IIII-FFFF.grb2

    -MM représente les mois de 01 à 12
    -DD représente les jours de 01 à 31
    -IIII représente l'heure d'initialisation, les 2 premiers chiffre sont les heures et les 2 derniers les minutes
    -FFFF représente le nombre d'heure écoulé après la prévision , idem les 2 premiers chiffre sont les heures et les 2 derniers les minutes

    dans mon répertoires j'ai plusieurs fichiers correspondants à plusieurs jours et mois . Pour chaque jours je dispose de 3 où 4 jeux de données , une toutes les 6 heures i.e IIII=0000 ,0600,1200,1800.

    Ce que j'essaye de faire c'est de lister tout les fichiers d'un jour donné et de le faire de manière récursive. Voici le code que j'ai écris (f90):

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    program test_ec
     
    implicit none
     
    !==déclaration des variables==
     
    integer :: mi,di,dil,mil
    character*3 :: temp
     
    !==instruction du programme==
     
    mil=1
    write(temp,'(i2.2)') mil
    read(temp,'(i2.2)') mi
    !conversion du mois en 2 chiffres , mil=1 => mi=01  
     
     
     ! on se place dans le répertoire où les fichiers sont stockés
     CALL chdir('/media/Hello/ncfiles/GFS' )
     
    do dil=1,31
     
         !ittération sur les jours
         write(temp,'(i2.2)') dil
         read(temp,'(i2.2)') di
     
         ! idem les jours ont deux chiffres significatifs dil=9 then di=09
     
    CALL execute_command_line( 'ls sub_gfsanl_4_2011${mi}${di}*.nc > yes.txt' )
    je liste tout les fichiers du jours et du mois concerné
     
    end do
     
    end program test_ec
    Toute aide ou suggestion est la bienvenu. Merci d'avance

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 2
    Points
    2
    Par défaut j'ai trouvé
    Voici comment j'ai résolu le probléme:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    program test_ec
     
     
    implicit none
     
    integer :: mi,di,iiii,fff
     character(len=1024) :: filename
     character(len=1024) :: format_string
     logical exist
     
    mi=1
    CALL chdir('/media/Hello/ncfiles/GFS' )
     
    !do di=1,10
         do iiii=0,18,6
             do fff=0,18,6
     
                       format_string = "(A17,i2.2,i2.2,A1,i4.4,A1,i3.3,A8)"
                        write (filename,format_string) "sub_gfsanl_4_2011",mi,di,"_",iiii,"_",fff,".grb2.nc"
     
                        inquire(file=trim(filename), exist=exist) 
     
                               if (exist) then
     
                                       write(*,*) 'file exists i can do do whatever i want with this file'
                               else
                                       write(*,*) 'I did not find that file.'
     
                               end if
    enddo
       enddo
         enddo
     
    end program test_ec

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Je confirme, passer par la fonction "inquire" et son argument "exist" est la bonne façon de procéder.

    Bonne continuation.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 152
    Points : 191
    Points
    191
    Par défaut
    Bonjour,

    Ou tu peux sinon faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    call system('ls sub_gfsanl_4_2011 > TMP_LS')
    Puis relire le fichier TMP_LS dans lequel seront stockés tous les noms de fichier que tu recherches.

    A plus,

    Marlan

Discussions similaires

  1. Réponses: 62
    Dernier message: 25/01/2007, 16h27
  2. Afficher le contenu d'un répertoire accessible par ftp
    Par diamonds dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 11/01/2007, 19h08
  3. afficher le contenu d'1 dossier ds ListBox
    Par meera dans le forum MFC
    Réponses: 16
    Dernier message: 16/10/2006, 17h38
  4. Afficher le contenu d'un dossier
    Par mpascolo dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 12/10/2006, 14h59
  5. afficher le contenu d'un dossier distant
    Par roots_man dans le forum ASP
    Réponses: 3
    Dernier message: 04/02/2005, 17h23

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