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 :

Probléme récupération extension fichier


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut Probléme récupération extension fichier
    Bonjour,

    J'ai un soucis concernant la récupération des extensions de mes fichiers. J'ai extrait des fichiers d'un logiciel que je dois reprendre et j'avais prévu de récupérer les extensions de ces fichiers par un split() et cela fonctionne parfaitement mais le soucis c'est que j'avais pas fait gaffe que certains fichiers possédent une date qui sont séparés de point

    exemple : C://rep1/rep2/titre-28.01.2016.txt

    Du coup je suis bloqué pour récupérer mon extension car certains ont une date et d'autres non donc l'extension ne se trouve pas forcément au même index pour tous . Concrétement là je ne sais pas trop comment m'y prendre pour pouvoir la récupérer .

    J'ai essayé en renommant le fichier temporairement que je renomme avec le nom d'origine par la suite mais la commande pour renommer le fichier me supprime le fichier du dossier...

    Auriez-vous une solution à me proposer ?

    Merci

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    Résolu avec un substring ... Faut je me calme sur les postes quand je bloque

    Resolution du probléme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    foreach my $attachment (@attachments){
     
     
     
    my $extension =  substr $attachment, -3;
     
     
     
    }

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Ta solution n'est pas très robuste (exemple : fichier avec des extensions de 2 ou 1 caractère).
    En revanche, tu peux très bien rester sur l'idée du split :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $file = "C://rep1/rep2/titre-28.01.2016.txt";
    my $ext = (split /\./, $file)[-1];
    Autre solution, utiliser une regexp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $file = "C://rep1/rep2/titre-28.01.2016.txt";
    my ($ext) = $file =~ /\.([^\.]+)$/;
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    Ok , Philou . Je vais pas te le cacher en y repassant ce midi , j'ai eu cette réflexion car j'ai des fichiers qui excel .xlsx donc m'a solution n'est pas bonne , je vais essayé avec ton code . Ce qui me dérange un peu , c'est que j'ai un peu mal à comprendre comment cela marche avec tous ces signes ^^

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Ta solution n'est pas très robuste (exemple : fichier avec des extensions de 2 ou 1 caractère).
    En revanche, tu peux très bien rester sur l'idée du split :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $file = "C://rep1/rep2/titre-28.01.2016.txt";
    my $ext = (split /\./, $file)[-1];
    Autre solution, utiliser une regexp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $file = "C://rep1/rep2/titre-28.01.2016.txt";
    my ($ext) = $file =~ /\.([^\.]+)$/;

    J'ai essayé t'as premiére solution elle fonctionne trés bien mais je ne comprends pas le [-1] pourrais-tu m'expliquer et là deuxiéme solution éventuellement. Merci

  6. #6
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    La meilleure solution est d'utiliser le module File::Basename. Je l'explique dans la FAQ.

  7. #7
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    L'index négatif de tableau sert à récupérer une valeur de tableau en partant de la fin : $tableau[-1] : dernier élément, $tableau[-2] : avant dernier, etc ...
    Quand à l'expression régulière : /\.([^\.]+)$/
    • \. désigne le point de l'extension
    • [^\.]+ désigne une liste d'au moins 1 caractère qui n'est pas un point (mais la plus longue possible)
    • les parenthèses autour de [^\.] permettent de capturer l'extension
    • $ désigne la fin de ligne (ou de chaine ici).

    Voila.

    Sinon, Djibril a raison, il faudrait utiliser le module File::Basename (fonction fileparse), qui en plus d'être robuste, est portable.
    Cela dit, il est rare que j'utilise fileparse si je dois seulement récupérer l'extension (mais je l'utilise systématiquement pour récupérer le nom de base, c'est à dire le nom de fichier sans le répertoire). L'interface de File::Basename lorsqu'on ne souhaite utiliser que l'extension est peu pratique, et le split ou la regexp sont fonctionnels et très largement portables sur tous les systèmes de fichier (la séparation "répertoire"/"fichier" est moins triviale, c'est pourquoi j'utilise dans ce cas le module).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 189
    Points : 68
    Points
    68
    Par défaut
    Désolé de répondre en retard , merci Philou maintenant tout fonctionne parfaitement et merci Djibril pour le lien je vais le mettre de coté

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

Discussions similaires

  1. Problème récupération du fichier depuis son formulaire
    Par zikyoubi dans le forum Développement Web en Java
    Réponses: 5
    Dernier message: 17/08/2013, 14h26
  2. Problème vérification extension fichiers envoyés.
    Par sasuke001 dans le forum Langage
    Réponses: 2
    Dernier message: 01/08/2011, 19h35
  3. [2008] Problème récupération données fichier plat
    Par programmeur_objet dans le forum SSRS
    Réponses: 4
    Dernier message: 04/04/2011, 08h52
  4. Problème récupération de fichier sur free
    Par zuzuu dans le forum Outils
    Réponses: 0
    Dernier message: 04/11/2009, 17h29
  5. Récupération extension fichier dans un répertoire
    Par legomaniac071 dans le forum Langage
    Réponses: 25
    Dernier message: 27/11/2006, 20h50

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