如何在Python中查找两个目录?
我知道要上到上一级目录,你应该使用
parentname = os.path.abspath(os.path.join(yourpath, os.path.pardir))
但是如果我想获取上面几个文件夹的名字呢?
比如说,我有一个路径是 /stuff/home/blah/pictures/myaccount/album,我想获取最后两个文件夹的名字“myaccount”和“album”(只要名字,不要路径),我该怎么做呢?
3 个回答
2
看起来没有什么特别优雅的解决方案,但这个方法应该可以解决问题:
>>> 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
的时候,第二部分会返回一个空字符串。所以如果你不检查路径的格式,最好先把这个斜杠去掉。
2
那我们可以把路径拆分成一个列表,然后取最后两个元素吗?
>>> 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']
3
>>> 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'
等等...