Si j'ai un nom de fichier comme l'un de ceux-ci:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Comment pourrais-je obtenir uniquement le nom du fichier, sans l'extension? Une regex serait-elle appropriée?
Si j'ai un nom de fichier comme l'un de ceux-ci:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Comment pourrais-je obtenir uniquement le nom du fichier, sans l'extension? Une regex serait-elle appropriée?
Réponses:
Dans la plupart des cas, vous ne devriez pas utiliser de regex pour cela.
os.path.splitext(filename)[0]
Cela permettra également de gérer .bashrc
correctement un nom de fichier en conservant le nom entier.
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, 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
.
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
Si je devais faire cela avec une regex, je le ferais comme ceci:
s = re.sub(r'\.jpg$', '', s)
Vous pouvez utiliser la méthode stem pour obtenir le nom du fichier.
Voici un exemple:
from pathlib import Path
p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file