Ne fonctionne pas correctement avec "git-1.7.8.tar.gz", où il ne supprime que le ".gz". J'utilise basename[:-len(".tar.gz")]pour cela.
blueyed
28
@blueyed: "Ne fonctionne pas correctement" est une question de perspective. Le fichier est un fichier gzip, dont le nom de base est git-1.7.8.tar. Il n'y a aucun moyen de deviner correctement le nombre de points que l'appelant veut supprimer, donc splitext()ne supprime que le dernier. Si vous voulez gérer des cas de bord comme .tar.gz, vous devrez le faire à la main. De toute évidence, vous ne pouvez pas supprimer tous les points, car vous vous retrouverez avec git-1.
Marcelo Cantos
26
>>>import os
>>> os.path.splitext("1.1.1.1.1.jpg")('1.1.1.1.1','.jpg')
Réponses:
Dans la plupart des cas, vous ne devriez pas utiliser de regex pour cela.
Cela permettra également de gérer
.bashrc
correctement un nom de fichier en conservant le nom entier.la source
basename[:-len(".tar.gz")]
pour cela.git-1.7.8.tar
. Il n'y a aucun moyen de deviner correctement le nombre de points que l'appelant veut supprimer, doncsplitext()
ne supprime que le dernier. Si vous voulez gérer des cas de bord comme.tar.gz
, vous devrez le faire à la main. De toute évidence, vous ne pouvez pas supprimer tous les points, car vous vous retrouverez avecgit-1
.la source
Si je devais faire cela avec une regex, je le ferais comme ceci:
la source
Pas besoin de regex.
os.path.splitext
est votre ami:la source
Vous pouvez utiliser la méthode stem pour obtenir le nom du fichier.
Voici un exemple:
la source