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 :

Lister fichiers dans répertoire


Sujet :

Fortran

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 35
    Points : 29
    Points
    29
    Par défaut Lister fichiers dans répertoire
    Bonjour

    Je programme des outils pour la simulation moléculaire, et pour ce faire, j'ai besoin de faire charger des éléments de bibliothèque sous forme de fichier texte (par ex des fichiers de configuration de morceaux de molécule) par un programme fortran 2003 (compilateur Intel 10.1 64bits sous Windows).

    Bien-sûr, ces fichiers textes sont rangés dans des répertoires dédiés, et pour que le programme fortran charge tous les fichiers du répertoire, j'ai placé, pour chaque répertoire, tous les noms de fichier dans un fichier texte "Liste.txt", ce qui oblige l'utilisateur à mettre à jour ce fichier à chaque enrichissement de la bibliothèque.

    Je souhaiterais faire charger par mon programme tous les fichiers présents dans le répertoire : est-il possible en Fortran de lister les noms de fichier ?

    Une possibilité serait peut-être d'appeler, par la routine fortran "system", un programme Perl ou Python qui créerait ce fichier liste automatiquement avant que le programme fortran l'utilise. L'un de ces deux langages en est-il capable ? L'appel "System" attend-t-il que l'instruction DOS qu'elle envoie soit terminée avant de poursuivre ?

    Cette solution semble un peu tordue , quelqu'un connaît-il une approche plus élégante ??

    D'avance merci beaucoup


    Yin Zhen

  2. #2
    Membre éprouvé
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Points : 982
    Points
    982
    Par défaut
    Je pense effectivement que la meilleure solution est d'utiliser une commande système. Et en ce qui concerne tes inquiétude, oui lorsque tu fais un call system le programme attend que l'exécution de ce que tu as demandé dans le call system soit finies. Pour la suite je suis désolé mais c'est des commandes linux ... (ls -l affiche le contenue du dossier sous forme de liste)

    Tu peux faire un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call system( "ls -l > liste.txt")
    Ensuite à toi de lire correctement liste.txt. Si tu as plusieurs dossier et sous dossier, tu peux commencer par faire un ls -l qui te donne la liste des dossiers que tu lies et que tu stocke dans une variable, par exemple un vecteur dossier(i) et ensuite tu lis dans chaque dossier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Do i=1,ndossier
         call system( "ls -l "//dossier(i)//" > liste"//dossier(i)//".txt")
    Enddo
    Ou alors si tu veux un seul fichier liste.txt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Do i=1,ndossier
         call system( "ls -l "//dossier(i)//" >> liste.txt")
    Enddo
    Si tu fais ça je te conseille d'appliquer la fonction trim au nom des dossiers pour supprimer les espaces qui peuvent causer pas mal de souci !

    Bon courage

  3. #3
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    le truc c'est qu'il est sous windows et donc "ls" n'existe pas (fo remplacer par "dir").

    cependant, sous XP, j'ai testé, les pipes existe donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call system( "dir > liste.txt")
    (+fioriture si besoin)

    le truc super chiant c'est le format du fichier généré... là, soit y a des option de dir (mais j'en doute) soit fo que le prog fortran remouline le fichier pour enlevé ce qui ne sert pas...
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 35
    Points : 29
    Points
    29
    Par défaut Merci
    Merci beaucoup !!!

    En effet, autant utiliser les possibilités du système (DOS ou Unix ou autre...) sans aller chercher du Perl.

    En toute chose la simplicité est une vertu.

    J'essaie tout de suite...

    Yin Zhen

  5. #5
    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
    Citation Envoyé par genteur slayer Voir le message
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call system( "dir > liste.txt")
    ...
    le truc super chiant c'est le format du fichier généré... là, soit y a des option de dir (mais j'en doute) soit fo que le prog fortran remouline le fichier pour enlevé ce qui ne sert pas...
    On y est presque : L'option, c'est /b. Donc, il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call system( "dir /b *.txt > liste.txt")
    Et là, le fichier ne contient que les noms de fichier dans une colonne.

    Dernière suggestion : Il serait avantageux d'utiliser un nom de fichier avec une extension différente (par exemple : .tmp) pour éviter que liste.txt se retrouve lui-même dans la liste...

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2008
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 35
    Points : 29
    Points
    29
    Par défaut Au final...
    Merci pour tous ces conseils...

    En fait, à partir d'un "dir" envoyé dans un fichier ".txt", j'ai pu me débrouiller avec le Fortran en repérant la position de la première lettre des noms de fichier, avec des instructions du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    open(1,file='...',blank='ZERO')
    ...
    read(1,fmt='(A100)') ligne
    nom_fichier(i)=ligne(37:)
    ...
    Ce n'est peut-être pas très portable, mais ça marche chez moi.

    Merci encore

    Yin Zhen

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/11/2008, 14h53
  2. 10G-WORD Recherche de fichiers dans répertoire
    Par Marcel Chabot dans le forum Forms
    Réponses: 10
    Dernier message: 01/05/2008, 16h12
  3. [WD10] lister Fichier dans repertoire
    Par jeruzalem dans le forum WinDev
    Réponses: 3
    Dernier message: 05/12/2007, 12h28
  4. Droits création-écriture fichier dans répertoire
    Par BATiViR dans le forum Delphi
    Réponses: 7
    Dernier message: 02/07/2007, 13h27
  5. [VBA-E]Lister fichiers dans repertoires et sous-rep
    Par megapacman dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/05/2007, 16h55

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