Obtenir le nom de fichier sans Extension en Python

Si j'ai un nom de fichier comme l'un d'eux:

1.1.1.1.1.jpg

1.1.jpg

1.jpg

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

78
demandé sur Will 2010-12-15 01:26:57

4 réponses

Dans la plupart des cas, vous ne devriez pas utiliser une expression rationnelle pour cela.

os.path.splitext(filename)[0]

Cela gérera également un nom de fichier comme .bashrc correctement en conservant le nom entier.

176
répondu Marcelo Cantos 2010-12-14 22:30:10
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
22
répondu Lennart Regebro 2010-12-14 22:32:29

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

s = re.sub(r'\.jpg$', '', s)
10
répondu Alan Moore 2010-12-15 00:10:20

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

os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')
6
répondu Triptych 2010-12-14 22:33:04