Hoe krijg ik de bestandsnaam zonder extensie uit een pad in Python?

Hoe krijg ik de bestandsnaam zonder extensie uit een pad in Python?

Oplossing

Verkrijg de naam van het bestand zonder de extensie:

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

Afdrukken:

/path/to/some/file

Belangrijke opmerking: Als de bestandsnaam uit meerdere punten bestaat, wordt alleen de extensie na de laatste punt verwijderd. Bijvoorbeeld:

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

Afdrukken:

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

Zie andere antwoorden hieronder als u dat geval moet behandelen.

Commentaren (8)

Je kunt je eigen maken met:

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

Belangrijke opmerking: Als er meer dan één . in de bestandsnaam staat, wordt alleen de laatste verwijderd. Bijvoorbeeld:

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

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

Zie hieronder voor andere antwoorden die daarop ingaan.

Commentaren (5)

Maar zelfs als ik os importeer, kan ik het niet path.basename noemen. Is het mogelijk om het zo direct als basename aan te roepen?

import os, en gebruik dan os.path.basename

import van os betekent niet dat je os.foo kunt gebruiken zonder naar os te verwijzen.

Commentaren (3)