如何从 pathlib.path 获取给定文件所在的文件夹名称?
How to get folder name, in which given file resides, from pathlib.path?
是否有类似于os.path.dirname(path)
的东西,但在路径库中?
看起来有一个 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'
请注意,os.path.dirname
和 pathlib
以不同方式处理带有尾部斜杠的路径。 some/path/
的 pathlib
父级是 some
:
>>> p = pathlib.Path('some/path/')
>>> p.parent
PosixPath('some')
虽然 os.path.dirname
在 some/path/
returns some/path
:
>>> os.path.dirname('some/path/')
'some/path'
我来这里是为了寻找非常相似的东西。我的解决方案基于@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 个,然后用 '/' 连接它们并创建结果字符串的路径。 编辑 最后的 +'/' 添加到尾部斜杠中 - 根据需要进行调整。
是否有类似于os.path.dirname(path)
的东西,但在路径库中?
看起来有一个 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'
请注意,os.path.dirname
和 pathlib
以不同方式处理带有尾部斜杠的路径。 some/path/
的 pathlib
父级是 some
:
>>> p = pathlib.Path('some/path/')
>>> p.parent
PosixPath('some')
虽然 os.path.dirname
在 some/path/
returns some/path
:
>>> os.path.dirname('some/path/')
'some/path'
我来这里是为了寻找非常相似的东西。我的解决方案基于@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 个,然后用 '/' 连接它们并创建结果字符串的路径。 编辑 最后的 +'/' 添加到尾部斜杠中 - 根据需要进行调整。