408 Stimmen

Wie erhält man nur den letzten Teil eines Pfades in Python?

Unter python Nehmen wir an, ich habe einen Weg wie diesen:

/folderA/folderB/folderC/folderD/

Wie kann ich nur die folderD Teil?

630voto

Fred Foo Punkte 341230

Verwenden Sie os.path.normpath dann os.path.basename :

>>> os.path.basename(os.path.normpath('/folderA/folderB/folderC/folderD/'))
'folderD'

Im ersten Fall werden alle nachfolgenden Schrägstriche entfernt, im zweiten Fall erhalten Sie den letzten Teil des Pfades. Wenn Sie nur basename gibt alles nach dem letzten Schrägstrich, der in diesem Fall '' .

132voto

jinnlao Punkte 981

Mit Python 3 können Sie die pathlib Modul ( pathlib.PurePath zum Beispiel):

>>> import pathlib

>>> path = pathlib.PurePath('/folderA/folderB/folderC/folderD/')
>>> path.name
'folderD'

Wenn Sie den Namen des letzten Ordners wissen wollen, in dem sich eine Datei befindet:

>>> path = pathlib.PurePath('/folderA/folderB/folderC/folderD/file.py')
>>> path.parent.name
'folderD'

41voto

Srikar Appalaraju Punkte 68866

Sie könnten Folgendes tun

>>> import os
>>> os.path.basename('/folderA/folderB/folderC/folderD')

UPDATE1: Dieser Ansatz funktioniert, wenn Sie /OrdnerA/OrdnerB/OrdnerC/OrdnerD/xx.py angeben. Dies ergibt xx.py als Basisnamen. Das ist nicht das, was Sie wollen, nehme ich an. Sie könnten also so vorgehen -

>>> import os
>>> path = "/folderA/folderB/folderC/folderD"
>>> if os.path.isdir(path):
        dirname = os.path.basename(path)

UPDATE2: Wie Lars schon sagte, sollten Änderungen vorgenommen werden, um die nachgestellten '/' zu berücksichtigen.

>>> from os.path import normpath, basename
>>> basename(normpath('/folderA/folderB/folderC/folderD/'))
'folderD'

27voto

Mike Mitterer Punkte 5932

Hier ist mein Ansatz:

>>> import os
>>> print os.path.basename(
        os.path.dirname('/folderA/folderB/folderC/folderD/test.py'))
folderD
>>> print os.path.basename(
        os.path.dirname('/folderA/folderB/folderC/folderD/'))
folderD
>>> print os.path.basename(
        os.path.dirname('/folderA/folderB/folderC/folderD'))
folderC

11voto

user1767754 Punkte 20816

Ich habe nach einer Lösung gesucht, um den letzten Ordnernamen zu erhalten, in dem sich die Datei befindet, ich habe einfach split zwei Mal, um das richtige Teil zu bekommen. Es ist nicht die Frage, aber Google hat mich hierher gebracht.

pathname = "/folderA/folderB/folderC/folderD/filename.py"
head, tail = os.path.split(os.path.split(pathname)[0])
print(head + "   "  + tail)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X