web-dev-qa-db-fra.com

Obtenir le nom de fichier sans extension dans Python

Si j'ai un nom de fichier comme celui-ci:

1.1.1.1.1.jpg

1.1.jpg

1.jpg

Comment pourrais-je obtenir uniquement le nom de fichier, sans l'extension? Une regex serait-elle appropriée?

83
user469652

Dans la plupart des cas, vous ne devriez pas utiliser de regex pour cela.

os.path.splitext(filename)[0]

Cela traitera également un nom de fichier comme .bashrc _ correctement en conservant le nom complet.

190
Marcelo Cantos
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
23
Lennart Regebro

Si je devais le faire avec une regex, je le ferais comme ceci:

s = re.sub(r'\.jpg$', '', s)
10
Alan Moore

Pas besoin de regex. os.path.splitext est votre ami:

os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')
6
Triptych

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
2
Vlad Bezden