Wie nur den letzten Teil eines Pfades in Python erhalten?
-
29-09-2019 - |
Frage
In Python, nehme ich habe einen Weg wie folgt:
/folderA/folderB/folderC/folderD/
Wie kann ich nur den folderD
Teil bekommen?
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]