infrarouge77 | Bonjour,
Voici un petit problème qui se pose à moi : j'ai un certain nombre de fichiers txt, correspondant à des mesures réalisées un certain jour à une certaine heure (le jour et l'heure forment le nom du fichier). Ces fichiers sont classées dans des dossiers (de 01 à 12) correspondant au mois, eux mêmes dans des dossiers correspondant à l'année (entre 2000 et 2013). Le nombre de fichiers présents par mois varie d'un mois à l'autre, impossible de le prévoir. De même, il y a certains mois (et même certaines années) où je n'ai aucune mesure, et donc je n'ai pas de dossiers.
Si ce n'est pas très clair, voici un exemple sous forme d'arborescence :
Code :
- /2010/
- ---01/
- ------15janvier13h15.txt
- ------24janvier20h14.txt
- ---02/
- ------02fevrier08h05.txt
- ------02fevrier16h30.txt
- ------10fevrier14h00.txt
- ------11fevrier18h45.txt
- ---04/
- ------8mars02h50.txt
- ------29mars09h00.txt
- /2012/
- ---09/
- ------12septembre19h30.txt
- ---12/
- ------24decembre21h00.txt
- ------25decembre22h30.txt
- ------30decembre08h45.txt
- ------31decembre11h15.txt
- /2013/
- ---05/
- ------01mai10h00.txt
- ---09/
- ------10septembre22h55.txt
- ------12septembre22h55.txt
- ------24septembre12h30.txt
|
Pour lire un fichier, j'utilise la subroutine suivante :
Code :
- SUBROUTINE Lecture_Fichier(Fichier,Header,Data)
- IMPLICIT NONE
- CHARACTER (len=*), INTENT(IN) :: Fichier !Adresse du fichier à ouvrir
- TYPE(T_FIC_HEADER), INTENT(OUT) :: Header
- TYPE(T_FIC_DONNEES), INTENT(OUT) :: Data
- INTEGER (kind=4) :: ios, Size_record
- INQUIRE(IOLENGTH=Size_record) Header, Data ! Taille de l'enregistrement à lire enregistrée dans Size_record
- OPEN( UNIT=1, &
- FILE=Fichier, &
- FORM="unformatted", &
- ACCESS="direct", &
- STATUS="old", &
- ACTION="read", &
- RECL=Size_record, &
- IOSTAT=ios )
- IF (ios/=0) THEN
- PRINT *,"Erreur lecture ",Fichier," - code : ",ios
- ELSE
- READ(UNIT=1, IOSTAT=ios, REC=1) Header, Data
- END IF
- CLOSE(UNIT=1)
- END SUBROUTINE Lecture_Fichier
|
Or il est nécessaire de connaitre le nom du fichier (et les dossiers le contenant) pour l'ouvrir. Je pourrai, en mode gros bourrin, tester toutes les combinaisons possibles de noms de fichiers, mais ça serait très long et super chronophage...
Existe-t-il donc une fonction, ou quelque chose d'autre (une fonction permettant d'ouvrir tour à tour tous les fichiers présents), en Fortran permettant de récupérer les noms des fichiers ou des dossiers présents dans un certain répertoire ?
Merci d'avance pour votre aide ! |