Isso funciona bem:
os.path.join(dir_name, base_filename + "." + filename_suffix)
Lembre-se de que os.path.join()
existe apenas porque sistemas operacionais diferentes usam caracteres separadores de caminho diferentes. Ele suaviza essa diferença, para que o código de plataforma cruzada não precise ser confundido com casos especiais para cada sistema operacional. Não é necessário fazer isso para as "extensões" do nome do arquivo (consulte a nota de rodapé), pois elas sempre estão conectadas ao restante do nome com um caractere de ponto, em todos os sistemas operacionais.
Se usar uma função de qualquer maneira faz você se sentir melhor (e você gosta de complicar desnecessariamente o seu código), você pode fazer o seguinte:
os.path.join(dir_name, '.'.join((base_filename, filename_suffix)))
Se você preferir manter seu código limpo, basta incluir o ponto no sufixo:
suffix = '.pdf'
os.path.join(dir_name, base_filename + suffix)
(Essa abordagem também é compatível com as convenções de sufixo no pathlib , que foram introduzidas no python 3.4.)
Nota de rodapé: Não existe uma "extensão" de nome de arquivo em sistemas operacionais que não sejam da Micorsoft. Sua presença no Windows vem do MS-DOS e FAT, que o emprestaram do CP / M, que está morto há décadas. Esse ponto com mais três letras que muitos de nós estamos acostumados a ver é apenas parte do nome do arquivo em qualquer outro sistema operacional moderno, onde ele não tem significado embutido.
.
. Para isso, pode-se usaros.extsep
.