Esto funciona bien:
os.path.join(dir_name, base_filename + "." + filename_suffix)
Manten eso en mente os.path.join()
existe solo porque diferentes sistemas operativos usan diferentes caracteres separadores de ruta. Suaviza esa diferencia para que el código multiplataforma no tenga que estar lleno de casos especiales para cada sistema operativo. No es necesario hacer esto para las "extensiones" de nombre de archivo (ver nota al pie) porque siempre están conectadas al resto del nombre con un carácter de punto, en cada sistema operativo.
Si usar una función de todos modos te hace sentir mejor (y te gusta complicar innecesariamente tu código), puedes hacer esto:
os.path.join(dir_name, '.'.join((base_filename, filename_suffix)))
Si prefiere mantener limpio su código, simplemente incluya el punto en el sufijo:
suffix = '.pdf'
os.path.join(dir_name, base_filename + suffix)
(Este enfoque también es compatible con las convenciones de sufijos en pathlib , que se introdujo en python 3.4).
Nota al pie: No existe una "extensión" de nombre de archivo en sistemas operativos que no sean de Micorsoft. Su presencia en Windows proviene de MS-DOS y FAT, que lo tomó prestado de CP / M, que ha estado muerto durante décadas. Ese punto más tres letras que muchos de nosotros estamos acostumbrados a ver es solo parte del nombre del archivo en cualquier otro sistema operativo moderno, donde no tiene un significado incorporado.
.
. Para esto se puede usaros.extsep
.