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 :

Comment lister les fichiers PDF d'un répertoire ?


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Points : 32
    Points
    32
    Par défaut Comment lister les fichiers PDF d'un répertoire ?
    Bonjour à tous,

    Dans un répertoire je souhaite faire apparaître uniquement les fichiers de types PDF, sachant que j'ai déjà réalisé un programme qui me permet d'afficher le contenu complet d'une arborescence ( C:\test) par exemple
    Voici le module que je viens de créer :
    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
     
    package Pdf;
    use strict;
    use warnings;
     
    sub GetFilesList
    {
            my $Path = $_[0];
            my $FileFound;
            my @FilesList=();
     
            # Lecture de la liste des fichiers
            opendir (my $FhRep, $Path)
                    or die "Impossible d'ouvrir le repertoire $Path\n";
            my @Contenu = grep { !/^\.\.?$/ } readdir($FhRep);
            closedir ($FhRep);
     
            foreach my $FileFound (@Contenu) {
                    # Traitement des fichiers
                    if ( -f "$Path/$FileFound") {
                            push ( @FilesList, "$Path/$FileFound" );
                    }
                    # Traitement des repertoires
                    elsif ( -d "$Path/$FileFound") {
                            # Boucle pour lancer la recherche en mode recursif
                            push (@FilesList, GetFilesList("$Path/$FileFound") );
                    }
     
            }
            return @FilesList;
    }
     
    #
    # Boucle principale
    #
     
    my @Files = GetFilesList ('C:/test/');
    foreach my $File  (@Files) { 
    	print "$File \n";
    	open ( my $fic, "+> fichier.pdf") || die ("le fichier n'existe pas \n");
    }   
    1;
    Voici ce qu'il me renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    use strict;
    use warnings;
    use Pdf;
     
    Pdf::GetFilesList ('C:/test/');
    Voici le résulat de ce programme :
    Pièce jointe 196488

    Cordialement bonne journée

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Si j'ai bien compris, il suffit par exemple de filtrer tes noms de fichiers sur l'extension pdf. Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                   if ( -f "$Path/$FileFound") {
                            push @FilesList, "$Path/$FileFound" if $file_found =~ /\.pdf$/i;
                    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Points : 32
    Points
    32
    Par défaut Comment lister les fichiers PDF d'un répertoire ?
    Bonjour,

    Je souhaite ne fair qu'apparaitre que les fichiers de type pour se faire j'ai rajouté cette ligne à mon programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    my @Files = GetFilesList ('C:/test');
    foreach my $File  (@Files) { 
    my $Ficext = " fichier.pdf \n";
    @Files = split (/./,$Ficext,2);
    print "$File \n";
    }
    Voici tout d'abord le contenu du répertoire test :

    Pièce jointe 196583

    Sachant que dans le répertoire 2015_09_17_18 il y a un fichier texte : fichier.txt

    Voici ce qu'il se passe lorsque j'exécute ce programme :

    Pièce jointe 196586

    Comment faire pour avoir que le fichier pdf ?

    Cordialement

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    ces deux lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $Ficext = " fichier.pdf \n";
    @Files = split (/./,$Ficext,2);
    ne servent à rien, et je ne vois même pas ce que tu crois faire avec elles. De toute façon, la variable @Files n'est pas réutilisée.

    Si tu veux filtrer ta liste en entrée et ne garder que les fichiers ayant l'extension PDF, tu peux faire quelque chose comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    my @Files = GetFilesList ('C:/test');
    foreach my $File  (@Files) { 
        next unless $File =~ /\.pdf$/i; # sauter ce fichier s'il ne se termine pas par .pdf ou .PDF
        print "$File \n";
    }
    Ou bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    my @Files = GetFilesList ('C:/test');
    foreach my $File  (@Files) { 
        print "$File \n" if $File =~ /\.pdf$/i; # imprimer le nom de fichier s'il se termine par .pdf ou .PDF
    }
    Ou encore filtrer la liste en amont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my @Files = grep {/\.pdf$/i} GetFilesList ('C:/test'); # filtrer la liste en entrée
    print "$_\n" for @Files;
    Ou même en une seule ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print "$_\n" for grep {/\.pdf$/i} GetFilesList ('C:/test');
    Je ne sais pas d'où vient ta fonction GetFilesList, mais il est possible qu'elle puisse filtrer elle-même ce qu'elle récupère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print "$_\n" for GetFilesList ('C:/test/*.pdf');
    La fonction glob peut également te rendre service. Par exemple, sous Windows, pour trouver les fichiers Perl sur mon répertoire courant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    C:\Users\Laurent>perl -e "print qq/$_\n/ for grep {/\.pl$/i} glob('*.*')"
    Bipoint.pl
    count.pl
    delegation.pl
    (...)
    test_perl6_9.pl
    test_perl6_enum.pl
    test_perl6_grammar.pl
    Ou des fichiers Python commençant par t, en filtrant "t*.py" directement dans l'appel de glob:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    C:\Users\Laurent>perl -e "print qq/$_\n/ for  glob('t*.py')"
    tortue1.py
    tortue2.py
    tortue3.py

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 183
    Points : 32
    Points
    32
    Par défaut Comment lister les fichiers PDF d'un répertoire ?
    Merci beaucoup pour ton aide, j'ai réussi à lister tous les fichiers PDF que je souhaitais et dans chaque répertoire

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

Discussions similaires

  1. [XL-2007] Comment lister les fichiers contenus dans un répertoire Sharepoint
    Par Riri80 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2020, 08h50
  2. Réponses: 13
    Dernier message: 23/12/2007, 18h22
  3. Réponses: 5
    Dernier message: 25/06/2007, 23h25
  4. Lister les fichiers de plusieurs sous-répertoire ?
    Par ratbiker dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 25/11/2005, 21h20
  5. [CF][PPC/C#] Comment lister les fichiers d'un répertoire ?
    Par dady dans le forum Windows Mobile
    Réponses: 18
    Dernier message: 20/05/2005, 14h35

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