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 :

Ouverture de fichiers au nom non-standard


Sujet :

Fortran

  1. #1
    Membre du Club Avatar de nyme92
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 177
    Points : 53
    Points
    53
    Par défaut Ouverture de fichiers au nom non-standard
    Bonjour,
    J'espère trouver solution, ou aide ici, soit via fortran soit autre méthode.
    Tout d'abord je suis sous gfortran, linux fedora core 6.
    Le problème : j'ai des reps de fichiers de données dans un rep DATA.
    Donc DATA/AOS contient des fichiers de données
    Le problème est que ces fichiers sont constitués d'espaces, chiffres, lettre, apostrophes, &, accents, bref le cauchemar. De plus ils sont issus de pays différents, et sont la plupart du temps créés avec WORD ou autre système qui permet de faire tout cela.
    Donc ouvrir un fichier qui s'appelle

    BIRM's data mjd 53979-54011.txt
    ou
    CSIRO TOPCON GPS DATA (LAB AUS CLOCK 36 340) SECUNCLASSIFIED211.txt

    n'est pas possible.
    Donc je fais un ls de AOS vers un fichier : AOS__files.dat
    et le but est de relire les noms, qui sont maintenant des lignes de texte, les mettre entre ""
    puis les lire sous fortran via open(unit=34 , file=nom)
    où 34 peut être autre, et nom="nom du fichier".

    Bien sûr, fortran va essayer d'ouvrir "nom du fichier" , littéralement (avec les ") et non : nom du fichier!

    Alors soit je trouve un moyen de le forcer à faire avec "nom du fichier", soit nom du fichier (mais je vois pas comment). Soit je trouve un moyen de modifier (script shell??) des noms des fichiers pour enlever tous les caractères à problèmes pour les re-ls , les dire et les ouvrir sans problème.

    Je n'ai plus d'idées et celles qui restent , je ne vois pas comment les faire.

    Merci pour toutes suggestions.
    G

  2. #2
    Membre régulier Avatar de Fortran90
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 83
    Points : 82
    Points
    82
    Par défaut
    gfortran ne gère pas les espaces dans les noms de fichiers?
    ça m'étonne mais partons du principe que oui.

    Renommer un ensemble de fichier en remplaçant les espaces par un "_", c'est ça que tu voudrais faire?
    Si oui, un peu de awk et de sed fera l'affaire ^^

  3. #3
    Membre du Club Avatar de nyme92
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 177
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par Fortran90 Voir le message
    gfortran ne gère pas les espaces dans les noms de fichiers?
    ça m'étonne mais partons du principe que oui.

    Renommer un ensemble de fichier en remplaçant les espaces par un "_", c'est ça que tu voudrais faire?
    Si oui, un peu de awk et de sed fera l'affaire ^^
    Cà va plus loin que cela, j'ai besoin de retirer tous les caractères non standard des noms de fichiers de dizaines d'arborescences afin de pouvoir les lire via fortran. Les remplacer par "_" n'est pas necessaire, retirer tous ce qui m'interdit d'ouvrir ces fichiers via fortran l'est.
    Quand à awk et sed, je ne connais vraiment pas assez, ni le script shell.

    Merci

  4. #4
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !

    A mon avis, ce n'est pas un problème de Fortran, mais un problème que tu dois résoudre dans ton système d'exploitation, en l'occurrence Linux. Je pense que tu devrais écrire une macro ou un script dans Linux, qui te modifie les noms de fichier pour les rendre compatibles avec Fortran, mais évidemment sans créer d'homonymes.

    Maintenant, si tes fichiers sont en format Word, je pense qu'il n'y a pas de meilleure solution que de les ouvrir dans Word, ou peut-être dans un traitement de texte plus civilisé comme Open Office ou WordPerfect, puis de les réenregistrer en ASCII.

    Enfin, si le nombre de tes fichiers n'est pas trop élevé, ne serait-il pas plus rapide de faire tout le travail toi-même à la main (ou d'engager un esclave pour le faire à ta place)? Dans tous les cas, tu as embarqué dans une sacrée galère et, si tu dois recevoir une nouvelle rafale de fichiers, je ne puis que te recommander d'émettre des directives très strictes à l'intention de ceux qui te les enverront.

    Bonne chance
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  5. #5
    Membre régulier Avatar de Fortran90
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 83
    Points : 82
    Points
    82
    Par défaut
    Bah en tout cas moi j'arrive à ouvrir en fortran avec f77 tes fichiers
    BIRM's data mjd 53979-54011.txt
    et
    CSIRO TOPCON GPS DATA (LAB AUS CLOCK 36 340) SECUNCLASSIFIED211.txt

    l'ouverture de tels fichiers ne pose pas de soucis.

    Maintenant s'il s'agit du contenu....c'est autre chose (cf JMB)

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2006
    Messages : 197
    Points : 185
    Points
    185
    Par défaut
    Bonjour

    Ce n'est pas du fortran mais ça peut t'aider :

    http://www.developpez.net/forums/sho...spaces+fichier

    tu pourra changer tous les noms de fichiers en passant pas le système (suppression des espacees et caractères un peu spéciaux...)

  7. #7
    Membre du Club Avatar de nyme92
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 177
    Points : 53
    Points
    53
    Par défaut noms fichiers non standards
    Citation Envoyé par FR119492 Voir le message
    Salut !

    A mon avis, ce n'est pas un problème de Fortran, mais un problème que tu dois résoudre dans ton système d'exploitation, en l'occurrence Linux. Je pense que tu devrais écrire une macro ou un script dans Linux, qui te modifie les noms de fichier pour les rendre compatibles avec Fortran, mais évidemment sans créer d'homonymes.

    Maintenant, si tes fichiers sont en format Word, je pense qu'il n'y a pas de meilleure solution que de les ouvrir dans Word, ou peut-être dans un traitement de texte plus civilisé comme Open Office ou WordPerfect, puis de les réenregistrer en ASCII.

    Enfin, si le nombre de tes fichiers n'est pas trop élevé, ne serait-il pas plus rapide de faire tout le travail toi-même à la main (ou d'engager un esclave pour le faire à ta place)? Dans tous les cas, tu as embarqué dans une sacrée galère et, si tu dois recevoir une nouvelle rafale de fichiers, je ne puis que te recommander d'émettre des directives très strictes à l'intention de ceux qui te les enverront.

    Bonne chance
    Jean-Marc Blanc
    Fortran ne gère pas ce genre de problématique. Il n'est d'ailleurs pas conçu pour.
    Les fichiers se comptent par milliers et sont touts appelés différemments.
    L'objectif est de les rendre "lisibles" par linux, quel que soit l'OS d'origine, et malheureusement Win et ses MFC sont très populaires.
    Donc oui, il me faut un script shell mais ce n'est pas, et de loin, mon domaine d'expertise.
    L'idée est d'invoquer un tel script "script" via fortran :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call system("source script.sh dir1 dir2 file")
    • dir1 = dir où se trouve les fichiers dont les noms sont à traiter
    • dir2= dir où le fichier "file" doit être placé
    • file= fichier qui contiendra la liste des noms corrigés des fichiers dans dir1
    • file= créé par script.sh
    Voilà, si quelqu'un possède ces qualités ....
    Merci à toutes et à tous.

    G

  8. #8
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par nyme92 Voir le message
    Donc oui, il me faut un script shell mais ce n'est pas, et de loin, mon domaine d'expertise.
    Nous sommes hors-sujet dans le Forum Fortran, mais un script shell est en effet ce qui convient le mieux a ce genre de probleme. J'avais ecrit ce script il y a quelque temps pour resoudre un probleme equivalent au tien. Le script renomme tous les fichiers reguliers (i.e. pas les repertoires ou les liens symboliques) en remplacant les caracteres accentues par leur version sans accent, et les espaces par des underscores.
    Il devrait t'etre utile.
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    #!/bin/ksh
     
    #
    # Renames regular files contained in the directory given
    # as argument by replacing all accented letters by their
    # non-accented equivalent, and spaces by underscores.
    #
     
    if [[ $# -ne 1 ]] ; then
       print "Usage: noacc.ksh <directory>"
       exit
    fi
     
    find ${1} -type f -print | while IFS='' read f
    do
     
      #
      # Remove all accents (if needed)
      #
      ACCNAME=`echo ${f} | tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ" "aceeeeiioouuACEEEEIIOOUU"`
     
      if [[ ${ACCNAME} != ${f} ]] ; then
     
        echo ${f} renamed to ${ACCNAME}
     
        # Uncomment for actual renaming
        #\mv "${f}" "${ACCNAME}"
     
      fi
     
      #
      # Replace all spaces by underscores (if needed)
      #
      SPCNAME=`echo ${ACCNAME} | sed -e 's/\ /_/g'`
     
      if [[ ${SPCNAME} != ${ACCNAME} ]] ; then
     
        echo ${ACCNAME} renamed to ${SPCNAME}
     
        # Uncomment for actual renaming
        #\mv "${ACCNAME}" "${SPCNAME}"
     
      fi
     
    done
    La seule limitation du script est que le repertoire qui contient les fichiers a renommer ne doit pas lui-meme contenir d'espace ou d'accents dans son nom !

  9. #9
    Membre régulier Avatar de Fortran90
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 83
    Points : 82
    Points
    82
    Par défaut
    Fortran ne gère pas ce genre de problématique. Il n'est d'ailleurs pas conçu pour.
    Les fichiers se comptent par milliers et sont touts appelés différemments.
    L'objectif est de les rendre "lisibles" par linux, quel que soit l'OS d'origine, et malheureusement Win et ses MFC sont très populaires.
    Bon j'ai ptet toujours rien compris, mais Linux gère bien les caractères spéciaux, suffit de mettre un backslash pour qu'il ne l'interprête pas comme un de ses caractères réservés...
    on peut essayer par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    >touch nom\ avec\ des\ espaces\ et\ un\ \$
    >ls
    nom avec des espaces et un $
    ...

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

Discussions similaires

  1. Ouverture de fichier avec nom dans une autre langue
    Par bannik dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2015, 15h00
  2. [AC-2003] Importer / Lier des fichiers d'extensions non standard
    Par niko8181 dans le forum Modélisation
    Réponses: 3
    Dernier message: 01/10/2012, 15h19
  3. ouverture de fichier et formules non calculées
    Par nanie_38 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/01/2010, 10h17
  4. Réponses: 4
    Dernier message: 18/08/2006, 07h57
  5. Fichier texte avec codage non standard
    Par giloutho dans le forum Langage
    Réponses: 4
    Dernier message: 15/07/2005, 19h31

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