如何获得只有在Python中的path的最后一部分?

在Python中,假设我有这样的path:

/folderA/folderB/folderC/folderD/ 

我怎样才能得到folderD部分?

使用os.path.normpath ,然后os.path.basename

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

第一个剥去任何后面的斜杠,第二个给你的path的最后一部分。 只使用basename给出最后一个斜杠后面的所有内容,在本例中是''

你可以做

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

UPDATE1:这种方法适用于你给/folderA/folderB/folderC/folderD/xx.py的情况。 这给了xx.py作为基本名称。 这不是你想要的,我猜。 所以你可以做到这一点 –

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

UPDATE2:正如lars指出的那样,为了适应尾随“/”而进行更改。

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

我正在寻找一个解决scheme来获取文件所在的最后一个文件夹名称,我刚刚使用了两次拆分,以获得正确的部分。 这不是问题,但谷歌转移我在这里。

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

天真的解决scheme(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:] 

这是我的方法:

 >>> 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