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 .bashrccorrectement 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