Basta ya de investigar por todo internet ya que has llegado al sitio exacto, tenemos la respuesta que necesitas recibir pero sin complicaciones.
Solución:
Prueba os.path.splitext, debería hacer lo que quieras.
import os
print os.path.splitext('/home/user/somefile.txt')[0]+'.jpg'
Ampliando la respuesta de AnaPana, cómo retirar una extensión usando pathlib (Python >= 3.4):
>>> from pathlib import Path
>>> filename = Path('/some/path/somefile.txt')
>>> filename_wo_ext = filename.with_suffix('')
>>> filename_replace_ext = filename.with_suffix('.jpg')
>>> print(filename)
/some/path/somefile.ext
>>> print(filename_wo_ext)
/some/path/somefile
>>> print(filename_replace_ext)
/some/path/somefile.jpg
Como dijo @jethro, splitext
es la forma ordenada de hacerlo. Pero en este caso, es bastante fácil dividirlo usted mismo, ya que la extensión debe ser la parte del nombre del archivo que viene después del punto final:
filename = '/home/user/somefile.txt'
print( filename.rsplit( ".", 1 )[ 0 ] )
# '/home/user/somefile'
los rsplit
le dice a Python que realice el string se divide a partir de la derecha de la stringy el 1
dice que realice como máximo una división (de modo que, por ejemplo, 'foo.bar.baz'
-> [ 'foo.bar', 'baz' ]
). Ya que rsplit
siempre devolverá un no vacío arraypodemos indexar con seguridad 0
en él para obtener el nombre de archivo menos la extensión.
Puedes confirmar nuestra investigación exponiendo un comentario y puntuándolo te estamos agradecidos.