如何在Python中查找两个目录?

问题描述:

我知道,去到一个父目录,你应该使用如何在Python中查找两个目录?

parentname = os.path.abspath(os.path.join(yourpath, os.path.pardir)) 

但是,如果我想获得一个目录的名称是什么几个文件夹呢?

说我给了/ stuff/home/blah/pictures/myaccount/album,我想获取最后两个文件夹“myaccount”和“album”的名称(不是路径,只是名称)在我的脚本中使用。我怎么做?

>>> p='/stuff/home/blah/pictures/myaccount/album' 
>>> os.path.abspath(p).split(os.sep)[-1] 
'album' 
>>> os.path.abspath(p).split(os.sep)[-2] 
'myaccount' 
>>> os.path.abspath(p).split(os.sep)[-3] 
'pictures' 
>>> os.path.abspath(p).split(os.sep)[-4] 
'blah' 

等等

有不看是什么特别优雅,但这个应该做的伎俩:

>>> yourpath = "/stuff/home/blah/pictures/myaccount/album" 
>>> import os.path 
>>> yourpath = os.path.abspath(yourpath) 
>>> (npath, d1) = os.path.split(yourpath) 
>>> (npath, d2) = os.path.split(npath) 
>>> print d1 
album 
>>> print d2 
myaccount 

请记住,如果提供的路径在结束os.path.split会返回一个空字符串第二组分尾随斜线,因此如果不另外验证所提供路径的格式,则可能需要确保先将其去掉。

将路径拆分成list并获取最后两个元素如何?

>>> import os 
>>> path_str = ' /stuff/home/blah/pictures/myaccount/album' 
>>> path_str.split(os.sep) 
[' ', 'stuff', 'home', 'blah', 'pictures', 'myaccount', 'album'] 

对于诸如...os.path.abspath()相对路径可以用于预先处理路径串。

>>> import os 
>>> path_str = os.path.abspath('.') 
>>> path_str.split(os.sep) 
['', 'tmp', 'foo', 'bar', 'foobar'] 
+0

这不是法律,但奇怪的是格式化的路径,面对强大的特别,像用'.'或''//作为路径元素。 –

+0

感谢您的评论,我只是使用问题中给出的路径字符串。我认为对于真实环境,可以使用'os.path.abspath()'来预处理路径字符串。 – hzm

+0

是的,这可能比在我的答案中使用'normpath'更强大 - 将更新它.. :-) –