Funziona bene:
os.path.join(dir_name, base_filename + "." + filename_suffix)
Tieni presente che os.path.join()
esiste solo perché diversi sistemi operativi utilizzano caratteri di separazione percorso diversi. Sopprime questa differenza, quindi il codice multipiattaforma non deve essere ingombro di casi speciali per ciascun sistema operativo. Non è necessario eseguire questa operazione per le "estensioni" dei nomi di file (vedere la nota a piè di pagina) poiché sono sempre connesse al resto del nome con un carattere punto, su ogni sistema operativo.
Se usare una funzione ti fa sentire meglio (e ti piace complicare inutilmente il tuo codice), puoi farlo:
os.path.join(dir_name, '.'.join((base_filename, filename_suffix)))
Se preferisci mantenere pulito il codice, includi semplicemente il punto nel suffisso:
suffix = '.pdf'
os.path.join(dir_name, base_filename + suffix)
(Questo approccio sembra essere compatibile anche con le convenzioni sui suffissi in pathlib , introdotte in python 3.4).
Nota a piè di pagina: non esiste una "estensione" di nome di file su sistemi operativi non Micorsoft. La sua presenza su Windows proviene da MS-DOS e FAT, che lo hanno preso in prestito da CP / M, che è morto da decenni. Quel punto-più-tre-lettere che molti di noi sono abituati a vedere è solo una parte del nome del file su ogni altro sistema operativo moderno, dove non ha alcun significato incorporato.
.
. Per questo si può usareos.extsep
.