最简单的方法是使用pathlib
。使用parent
将获取父级的完整路径,name
将只给出最后一个组件:
>>> from pathlib import Path
>>> path = Path("/a/b/c/d/e")
>>> path.parent.name
'd'
相比之下,要使用os.path
完成同样的操作,您需要获取路径的basename所在目录的dirname。因此,翻译为:
import os
path = "C:/example/folder/file1.jpg"
print(os.path.basename(os.path.dirname(path)))
哪个是更好的版本:
os.path.split(os.path.split(path)[0])[1]
当两者都给出:
'folder'
如您所见,
pathlib
的方法更加清晰易读。由于
pathlib
采用了面向对象的方式来表示路径,而不是字符串,因此我们可以清晰地观察到属性和方法的链条。{{}}
path.parent.name
按顺序阅读:
从路径开始 -> 取其父级 -> 取其名称
而在使用字符串方式的 os
函数中,实际上需要从内向外阅读!
os.path.basename(os.path.dirname(path))
按顺序阅读为:
路径的父级名称
相信您会同意,这样更难阅读和理解(这只是一个简单的例子)。
你也可以使用str.split
方法和os.sep
一起使用:
>>> path = "C:\\example\\folder\\file1.jpg"
>>> path.split(os.sep)[-2]
'folder'
但是正如文档所述:
请注意,仅仅知道这个分隔符是不足以解析或连接路径名的 - 使用os.path.split()和os.path.join() - 但有时它很有用。
split
- SuperStew