Jak uzyskać nazwę pliku bez rozszerzenia ze ścieżki w Pythonie?

Jak uzyskać nazwę pliku bez rozszerzenia ze ścieżki w Pythonie?

Rozwiązanie

Uzyskanie nazwy pliku bez rozszerzenia:

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

Drukuje:

/path/to/some/file

_Important Note:_Jeżeli nazwa pliku zawiera wiele kropek, usuwane jest tylko rozszerzenie po ostatniej z nich. Na przykład:

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

Drukuje:

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

Zobacz inne odpowiedzi poniżej, jeśli musisz poradzić sobie z tym przypadkiem.

Komentarze (8)

Możesz zrobić swój własny z:

>>> 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'

Ważna uwaga: Jeśli w nazwie pliku znajduje się więcej niż jedno ., usuwane jest tylko ostatnie z nich. Na przykład:

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

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

Zobacz poniżej dla innych odpowiedzi, które dotyczą tego problemu.

Komentarze (5)

Ale nawet kiedy importuję os, nie jestem w stanie nazwać go path.basename. Czy możliwe jest wywołanie go bezpośrednio jako basename?

import os, a następnie użyj os.path.basename.

importowanieosnie oznacza, że możesz użyćos.foobez odwoływania się doos`.

Komentarze (3)