Como obter o nome do arquivo sem a extensão de um caminho em Python?

Como obter o nome do arquivo sem a extensão de um caminho em Python?

Solução

Obtendo o nome do arquivo sem a extensão:

import os
print(os.path.splitext("/path/to/some/file.txt")[0])

Impressões digitais:

/path/to/some/file

Nota Importante:_ Se o nome do arquivo tiver vários pontos, apenas a extensão após o último é removida. Por exemplo, o nome de um arquivo tem múltiplos pontos:

import os
print(os.path.splitext("/path/to/some/file.txt.zip.asc")[0])

Impressões digitais:

/path/to/some/file.txt.zip

Veja outras respostas abaixo se você precisa lidar com esse caso.

Comentários (8)

Podes fazer o teu próprio com:

>>> import os
>>> base=os.path.basename('/root/dir/sub/file.ext')
>>> base
'file.ext'
>>> os.path.splitext(base)
('file', '.ext')
>>> os.path.splitext(base)[0]
'file'

Nota importante: Se houver mais de um . no nome do arquivo, apenas o último é removido. Por exemplo, se houver mais de um . no nome do arquivo, apenas o último será removido:

/root/dir/sub/file.ext.zip -> file.ext

/root/dir/sub/file.ext.tar.gz -> file.ext.tar

Veja abaixo outras respostas que tratam disso.

Comentários (5)

Mas mesmo quando importo os, não sou capaz de lhe chamar caminho.basename. É possível chamar-lhe tão directamente como basename?

Importar os', e depois utilizar 'os.path.basename'.

Importar os não significa que você pode utilizar os.foo sem se referir a os.

Comentários (3)