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
.os.path.join(dir_name, base_filename, os.extsep, extension)
. Sua resposta está perfeitamente correta.+
entre as partes do nome do arquivo.os.path.join()
Adiciona OS-específicas separadores de caminho (/
por exemplo) entre os argumentos (como @ sәɹoɈ corretamente tê-los em seu / sua resposta Assim, a forma correta de seu trecho de código é:.os.path.join(dir_name, base_filename + os.extsep + extension)
Se você tiver a sorte de executar o Python 3.4+, poderá usar
pathlib
:fonte
with_suffix()
será substituído em vez de anexado. Você quer algo comoPath(dirname, filename2 + suffix)
Hum, por que não apenas:
fonte
Basta usar
os.path.join
para ingressar no seu caminho com o nome do arquivo e a extensão. Usesys.argv
para acessar os argumentos passados para o script ao executá-lo:Basta executar o script como:
fonte