Frage

In Python, nehme ich habe einen Weg wie folgt:

/folderA/folderB/folderC/folderD/

Wie kann ich nur den folderD Teil bekommen?

War es hilfreich?

Lösung

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

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

Die ersten Streifen aus irgendwelchen Hinterschrägstriche, gibt der zweite Sie den letzten Teil des Weges. nur basename Mit alles nach dem letzten Schrägstrich gibt, die in diesem Fall ist ''.

Andere Tipps

Sie können tun

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

UPDATE1: Dieser Ansatz funktioniert im Falle geben Sie es /folderA/folderB/folderC/folderD/xx.py. Dies gibt xx.py als Basisnamen. Das ist nicht das, was Sie wollen, ich denke,. So könnten Sie dies tun -

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

UPDATE2: Wie lars wies darauf hin, die Änderungen, um zu empfangen Hinter ‚/'.

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

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

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

>>> import pathlib

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

Wenn Sie die letzten Ordnernamen mögen, wo eine Datei befindet:

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

Ich Suche nach einer Lösung der letzten folder zu bekommen, wo sich die Datei befindet, i Split zweimal nur verwendet, den rechten Teil zu bekommen. Es ist nicht die Frage, aber Google mich hier übertragen.

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

Eine naive Lösung (Python 2.5.2 +):

s="/path/to/any/folder/orfile"
desired_dir_or_file = s[s.rindex('/',0,-1)+1:-1] if s.endswith('/') else s[s.rindex('/')+1:]
path = "/folderA/folderB/folderC/folderD/"
last = path.split('/').pop()
str = "/folderA/folderB/folderC/folderD/"
print str.split("/")[-2]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top