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

Langage Perl Discussion :

lecture de sous répertoires


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut lecture de sous répertoires
    Bonjour à tous;

    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
    my $pDirectory;
    my $path =  "P:/Theorie/PCR_Bact_Hybridation/Fichiers_FASTA_74_79";
    opendir ($pDirectory,$path)
    or die ("Directory ".$path." can't be open!\n");
    my @Directory_list = readdir($pDirectory);
    closedir ($pDirectory);
     
    foreach my $Bact (@Directory_list)
    {
            if($Bact=~/\w*_\w*_\w*/)
            {
                    my $psubDirectory;
                    my $subpath =  "P:/Theorie/PCR_Bact_Hybridation/Fichiers_FASTA_74_79/$Bact";
                    opendir ($psubDirectory,$subpath) or die ("Directory ".$subpath." can't be open!\n");
                    my @subDirectory_list = readdir($psubDirectory);
                    closedir ($psubDirectory);
     
                    foreach my $Sonde (@subDirectory_list)
                    {...
    Dans le répertoire 'P:/Theorie/PCR_Bact_Hybridation/Fichiers_FASTA_74_79', j'ai une série de répertoires '$Bact' contenant chacun une série de fichiers $Sonde.fsa.

    Je récupère la liste de mes répertoires dans @Directory_list et ensuite si c'est un répertoire (vérifié par /\w*_\w*_\w*/), je l'ouvre et j'y récupère les fichiers à analyser.

    J'ai deux questions :
    1) au lieu de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($Bact=~/\w*_\w*_\w*/)
    j'amerais faire
    afin de vérifier plus proprement que $Bact soit bien un répertoire et non un fichier. Mais de cette façon, je ne récupère que '.' et '..' et non les répertoires que j'aimerais utiliser.
    => 'P:/Theorie/PCR_Bact_Hybridation/Fichiers_FASTA_74_79' contient des fichiers qui ne doivent pas être utiliser et une série de répertoires devant tous être récupérés.


    2) Mes boucles ne fonctionne pas car en plus de mes noms de fichiers, je récupère les répertoires racines '.' et '..'. Comment puis-je faire afin de les supprimer de ma liste.


    Donc en résumé, ce que j'aimerais faire c'est récupérer tous les fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @liste = glob('P:/Theorie/PCR_Bact_Hybridation/Fichiers_FASTA_74_79/*/*.fsa');
    en utilisant opendir car je dois garder les noms de mes répertoires.

    Merci beaucoup,

    Jasmine,

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    voici une procédure que j'utilise pour lister répertoire et sous répertoire.
    Tu peux l'adapter à tes besoins.

    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
     
    # But         : lister repertoires et sous repertoires.
    # Retourne  : tableau de repertoires
    # Necessite : rien
    sub lister_repertoires_recursif {
      unless( scalar(@_) == 1) {
        my $usage = <<'FIN_USAGE';
        Usage: lister_repertoires_recursif($repertoire);
    FIN_USAGE
        croak($usage);
       }
      my ($repertoire) = @_;
     
        opendir (REP, $repertoire) or 
          die "impossible d'ouvrir le repertoire $repertoire\n";
        my @file_rep = grep { !/^\.\.?$/ } readdir(REP);
        closedir (REP);
     
        my @repertoires = ();
        foreach my $nom (@file_rep) {
            if ( -d "$repertoire/$nom") {
              push (@repertoires, "$repertoire/$nom");
              push (@repertoires, &lister_repertoires_recursif("$repertoire/$nom"));
            }
        }
        return @repertoires;
    }
    Tu y verras aussi comment j'évite les . et ..

  3. #3
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Merci beaucoup, cela fonctionne. J'ai encore un peu de mal avec les fonctions récursives, j'arrive à les comprendre mais pas à les écrire. Je suppose que cela viendra avec le temps.


    Merci pour ton aide,


    Jasmine,

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/05/2007, 23h20
  2. Lecture des répertoires et sous répertoire en php
    Par BRAUKRIS dans le forum Langage
    Réponses: 1
    Dernier message: 30/03/2006, 17h27
  3. script qui explore les sous-répertoire ?
    Par farenheit dans le forum Flash
    Réponses: 9
    Dernier message: 20/07/2005, 12h02
  4. fichier .bat : problèmes avec des sous-répertoires
    Par aymron dans le forum Windows
    Réponses: 4
    Dernier message: 23/06/2005, 09h33
  5. [FLASH MX] Lecture d'un répertoire
    Par n_tony dans le forum Flash
    Réponses: 6
    Dernier message: 04/08/2004, 15h25

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