Hoe krijg ik de bestandsnaam zonder extensie uit een pad in Python?
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.
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.
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.