如何从pathlib.path获取给定文件所在的文件夹名称?

时间:2016-02-18 18:58:53

标签: python filenames pathlib

是否有类似于os.path.dirname(path)的内容,但是在pathlib中?

2 个答案:

答案 0 :(得分:44)

看起来有一个parents元素包含给定路径的所有父目录。例如,如果你从:

开始
>>> import pathlib
>>> p = pathlib.Path('/path/to/my/file')

然后p.parents[0]是包含file的目录:

>>> p.parents[0]
PosixPath('/path/to/my')

...而p.parents[1]将成为下一个目录:

>>> p.parents[1]
PosixPath('/path/to')

p.parent是另一种要求p.parents[0]的方式。您可以将Path转换为字符串,并获得您期望的结果:

>>> str(p.parent)
'/path/to/my'

此外,在任何Path上,您都可以使用.absolute()方法获取绝对路径:

>>> os.chdir('/etc')
>>> p = pathlib.Path('../relative/path')
>>> str(p.parent)
'../relative'
>>> str(p.parent.absolute())
'/etc/../relative'

答案 1 :(得分:-1)

我来这里是为了寻找非常相似的东西。我的解决方案,基于@larsks 的上述内容,并假设您想保留除文件名之外的整个路径,是这样做的:

>>> import pathlib
>>> p = pathlib.Path('/path/to/my/file')
>>> pathlib.Path('/'.join(list(p.parts)[1:-1])+'/')

本质上,list(p.parts)[1:-1] 创建了一个 Path 元素列表,从第二个到第 n-1 个,然后用 '/' 将它们连接起来,并创建结果字符串的路径。 编辑最后的 +'/' 添加在斜杠中 - 根据需要进行调整。