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

Python Discussion :

Récuperer le nom d'un fichier sans son extension


Sujet :

Python

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 18
    Points
    18
    Par défaut Récuperer le nom d'un fichier sans son extension
    Bonjour,

    J'ai un fichier xxxx.txt

    Je souhaite juste récupérer le nom de ce fichier sans son extension de sorte que lorsque je fais

    print
    il m'affiche xxxx

    Y'a t-il un moyen svp ? merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 96
    Points : 72
    Points
    72
    Par défaut
    Bonjour,

    peu être en utilisant les expressions régulières :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    import re
     
    m = re.search('[^.]*','xxxx.txt')
    print m.group(0)
    xxxx

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    merci

  4. #4
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Bonjour

    Une expression régulière pour récupérer ce qu'il y a avant un '.' dans une chaine, c'est un peu "grosse Bertha".

    split() fait tout aussi bien l'affaire.

    De plus, quand il s'agit d'un nom de fichier, os.path.splitext est même mieux : souvent les fichiers subissent plusieurs transformations et les extensions s'enchainent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> m = re.search('[^.]*','xxxx.tar.gz')
    >>> m.group(0)
    'xxxx'
    >>> os.path.splitext('xxxx.tar.gz')
    ('xxxx.tar', '.gz')
    ici, le fichier gzippé c'est xxxx.tar, pas xxx


    Pour peu que ce soit un chemin, avec un répertoire dont le nom contient un '.' (versions) et pas un simple nom, la différence est encore plus flagrante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> m = re.search('[^.]*','a/b/c.d/xxxx.tar.gz')
    >>> m.group(0)
    'a/b/c'
    >>> os.path.splitext('a/b/c.d/xxxx.tar.gz')
    ('a/b/c.d/xxxx.tar', '.gz')

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 46
    Points : 27
    Points
    27
    Par défaut
    Bonjour

    Bon je suis pas un pro Python, mais si il souhaites vraiment ne pas avoir la ou les extensions versions possible, pourquoi ne pas utilisé tout simplement split() comme dit au dessus ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    listFile = ('Fichier1.txt', 'Fichier2.tar.gz', 'Fichier3.gz.tu'
    listFileSplit = []
    listFinal = []
    for x in listFile:
        listFileSplit.append(x.split("."))
    for x in listFileSplit:
        listFinal.append(x[0])
    Les deux for peuvent être fait en même temps je penses. Seul soucis de sa, si ton fichier s'appel "fichier.quelquechose.tar", dans ta liste tu n'auras que "ficier"

  6. #6
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Bonjour,
    le module os propose cela.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #! /usr/bin/env python
    #coding=utf-8
     
    import os
     
    for onePath in [
        "/monDossier/MonFichier.txt",
        "/monDossier/MonFichier",
        "MonFichier.txt",
        "MonFichier",
    ]:
        print os.path.splitext(os.path.basename(onePath))[0]
    Ceci renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MonFichier
    MonFichier
    MonFichier
    MonFichier

  7. #7
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    mais si il souhaites vraiment ne pas avoir la ou les extensions versions possible, pourquoi ne pas utilisé tout simplement split() comme dit au dessus ?
    [...]
    Seul soucis de sa, si ton fichier s'appel "fichier.quelquechose.tar", dans ta liste tu n'auras que "ficier"
    Tout dépendra du contexte. Je voulais seulement, en parlant de os.path.splitext, élargir la discussion, d'autant que, parfois les questions sont posées "à minima". Connaître son existence ne mange pas de pain et c'était une bonne occasion. C'est tout

  8. #8
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 751
    Points
    1 751
    Par défaut
    Oups, j'avais pas lu en détail ton message.

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

Discussions similaires

  1. [SP-2010] Recupérer le nom d'un fichier sans son extension
    Par supierre dans le forum Développement Sharepoint
    Réponses: 4
    Dernier message: 31/01/2012, 15h33
  2. Obtenir le nom d'un fichier sans son extension
    Par verso61 dans le forum VB.NET
    Réponses: 5
    Dernier message: 28/10/2010, 13h46
  3. [Batch] Obtenir uniquement le nom d'un fichier sans son chemin
    Par Guiiil dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 08/07/2010, 10h40
  4. Récupérer le nom d'un fichier sans son extension
    Par Shoot dans le forum Langage
    Réponses: 5
    Dernier message: 09/04/2008, 09h32
  5. Séparer le nom d'un fichier de son extension
    Par codial dans le forum Delphi
    Réponses: 3
    Dernier message: 16/03/2007, 18h29

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