[FORTRAN] Ouvrir les fichiers d'un répertoire sans connaitre leur nom

Ouvrir les fichiers d'un répertoire sans connaitre leur nom [FORTRAN] - Divers - Programmation

Marsh Posté le 04-03-2014 à 15:09:01    

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 :
  1. /2010/
  2. ---01/
  3. ------15janvier13h15.txt
  4. ------24janvier20h14.txt
  5. ---02/
  6. ------02fevrier08h05.txt
  7. ------02fevrier16h30.txt
  8. ------10fevrier14h00.txt
  9. ------11fevrier18h45.txt
  10. ---04/
  11. ------8mars02h50.txt
  12. ------29mars09h00.txt
  13. /2012/
  14. ---09/
  15. ------12septembre19h30.txt
  16. ---12/
  17. ------24decembre21h00.txt
  18. ------25decembre22h30.txt
  19. ------30decembre08h45.txt
  20. ------31decembre11h15.txt
  21. /2013/
  22. ---05/
  23. ------01mai10h00.txt
  24. ---09/
  25. ------10septembre22h55.txt
  26. ------12septembre22h55.txt
  27. ------24septembre12h30.txt


 
Pour lire un fichier, j'utilise la subroutine suivante :
 

Code :
  1. SUBROUTINE Lecture_Fichier(Fichier,Header,Data)
  2. IMPLICIT NONE
  3. CHARACTER (len=*), INTENT(IN)  :: Fichier !Adresse du fichier à ouvrir
  4. TYPE(T_FIC_HEADER), INTENT(OUT)  :: Header
  5. TYPE(T_FIC_DONNEES), INTENT(OUT) :: Data
  6. INTEGER (kind=4)   :: ios, Size_record
  7. INQUIRE(IOLENGTH=Size_record) Header, Data ! Taille de l'enregistrement à lire enregistrée dans Size_record
  8. OPEN( UNIT=1,   &
  9.   FILE=Fichier,  &
  10.   FORM="unformatted", &
  11.   ACCESS="direct", &
  12.   STATUS="old",  &
  13.   ACTION="read",  &
  14.   RECL=Size_record, &
  15.   IOSTAT=ios  )
  16. IF (ios/=0) THEN
  17.   PRINT *,"Erreur lecture ",Fichier," - code : ",ios
  18. ELSE
  19.   READ(UNIT=1, IOSTAT=ios, REC=1) Header, Data
  20. END IF
  21. CLOSE(UNIT=1)
  22. 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 !

Reply

Marsh Posté le 04-03-2014 à 15:09:01   

Reply

Marsh Posté le 04-03-2014 à 16:13:09    

http://stackoverflow.com/questions [...] -directory
 
Le code source donné en fin de topic devrait t'aider. ;)
 
Edit : cet autre topic va dans le même sens : http://objectmix.com/fortran/11685 [...] sting.html
Fortran ne semble pas avoir le concept de répertoire, il faut donc passer par une commande système de listing des fichiers d'un répertoire donné. :/


Message édité par rufo le 04-03-2014 à 16:14:32

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 05-03-2014 à 10:01:28    

Parfait, merci beaucoup ! Je me plonge là dedans

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed