在pathlib中是否有类似于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'
>>> os.chdir('/etc')
>>> p = pathlib.Path('../relative/path')
>>> str(p.parent)
'../relative'
>>> str(p.parent.absolute())
'/etc/../relative'
from pathlib import Path
file_path = Path("/Users/yuanz/PycharmProjects/workenv/little_code/code09/sample.csv")
file_path.parent
# >>> /Users/yuanz/PycharmProjects/workenv/little_code/code09
file_path.name
# >>> sample.csv
file_path.suffix
# >>> .csv
file_path.parent.joinpath("dd.png")
我来这里寻找非常类似的东西。 基于@larsks上面的内容,假设您想保留整个路径,除了文件名之外,我的解决方案是执行:
>>> import pathlib
>>> p = pathlib.Path('/path/to/my/file')
>>> pathlib.Path('/'.join(list(p.parts)[1:-1])+'/')
本质上, list(p.parts)[1:-1]
创建了一个路径元素列表,从第二个到倒数第二个,然后您可以使用 '/' 将它们连接起来,并使用结果字符串创建一个路径。 编辑 最后的 '+'/' 添加尾随斜杠-根据需要进行调整。
pathlib.
了。 - Mo S/
,这可能不是你想要的,仅执行 p.parent
有什么优势? - johnsonp.parent
:\ - Mo S
p.parents[0]
,带有s
。 - smitellip.parent.resolve()
来获取已解析的绝对路径。 - Bercip.parent.name
可以获取父目录的名称,而不包含整个路径。 - BrettJ