How to get only the last part of a path in Python?
--------------------------------------------------
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Light Drops
--
Chapters
00:00 How To Get Only The Last Part Of A Path In Python?
00:18 Accepted Answer Score 616
00:44 Answer 2 Score 129
01:09 Answer 3 Score 39
01:46 Answer 4 Score 27
02:05 Answer 5 Score 11
02:27 Thank you
--
Full question
https://stackoverflow.com/questions/3925...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #path #pathmanipulation
#avk47
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Light Drops
--
Chapters
00:00 How To Get Only The Last Part Of A Path In Python?
00:18 Accepted Answer Score 616
00:44 Answer 2 Score 129
01:09 Answer 3 Score 39
01:46 Answer 4 Score 27
02:05 Answer 5 Score 11
02:27 Thank you
--
Full question
https://stackoverflow.com/questions/3925...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #path #pathmanipulation
#avk47
ACCEPTED ANSWER
Score 627
Use os.path.normpath to strip off any trailing slashes, then os.path.basename gives you the last part of the path:
>>> os.path.basename(os.path.normpath('/folderA/folderB/folderC/folderD/'))
'folderD'
Using only basename gives everything after the last slash, which in this case is ''.
ANSWER 2
Score 40
You could do
>>> import os
>>> os.path.basename('/folderA/folderB/folderC/folderD')
UPDATE1: This approach works in case you give it /folderA/folderB/folderC/folderD/xx.py. This gives xx.py as the basename. Which is not what you want I guess. So you could do this -
>>> import os
>>> path = "/folderA/folderB/folderC/folderD"
>>> if os.path.isdir(path):
dirname = os.path.basename(path)
UPDATE2: As lars pointed out, making changes so as to accomodate trailing '/'.
>>> from os.path import normpath, basename
>>> basename(normpath('/folderA/folderB/folderC/folderD/'))
'folderD'
ANSWER 3
Score 27
Here is my approach:
>>> 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
ANSWER 4
Score 11
I was searching for a solution to get the last foldername where the file is located, I just used split two times, to get the right part. It's not the question but google transfered me here.
pathname = "/folderA/folderB/folderC/folderD/filename.py"
head, tail = os.path.split(os.path.split(pathname)[0])
print(head + " " + tail)