如何组合多个pathlib对象



我有两个使用Python的pathlib库的Path对象,pathA = Path('/source/parent')pathB = Path('/child/grandchild')。将两者组合以获得Path('/source/parent/child/grandchild')对象的最直接方法是什么?

根据文档:

你可以通过pathlib.PurePath(*pathsegments)轻松做到这一点

"路径段的每个元素可以是表示路径段,一个实现操作系统的对象。PathLike接口返回字符串或其他路径对象">

>>> PurePath('foo', 'some/path', 'bar')
PurePosixPath('foo/some/path/bar')
>>> PurePath(Path('foo'), Path('bar'))
PurePosixPath('foo/bar')

所以对你来说,它将是:

pathA = pathlib.Path('source/parent')
pathB = pathlib.Path('child/grandchild')
pathAB = pathlib.PurePath(pathA, pathB)

Output: source/parent/child/grandchild

注意

"当给出几个绝对路径时,最后一个路径作为锚点(模仿os.path.join((的行为(:";

>>> PurePath('/etc', '/usr', 'lib64')
PurePosixPath('/usr/lib64')
>>> PureWindowsPath('c:/Windows', 'd:bar')
PureWindowsPath('d:bar')

即使你这样做:

pathA = pathlib.Path('/source/parent')
pathB = pathlib.Path('/child/grandchild')
pathAB = pathlib.PurePath(pathA, pathB)

Pathlib将像处理由字符串表示的路径对象一样处理pathB。

Output: source/child/grandchild
pathA = Path('/source/parent')
pathB = Path('child/grandchild') * remove the first front slash
print(pathA / pathB)

这对我在Win 11上使用python 3.11.3起到了作用。

>>> from pathlib import Path, PurePath
>>> patha = Path("C:/bob/zaa/mountain/Exports")
>>> fpath = PurePath(patha,Path("files/bobsfile.jpg"))
>>> fpath
PureWindowsPath('C:/bob/zaa/mountain/Exports/files/bobsfile.jpg')
>>> print(fpath)
C:bobzaamountainExportsfilesbobsfile.jpg

好的。。。明白了。在第二个参数中不能有前导斜杠。

在Python的pathlib库中,可以使用/运算符连接路径。要组合两个路径pathapathb,您可以简单地使用/运算符,如下所示:


from pathlib import Path
patha = Path('/source/parent')
pathb = Path('/child/grandchild')
combined_path = patha / pathb

在执行级联之后,combined_path变量将保存所得到的路径对象Path('/source/parent/child/grandchild')

相关内容

  • 没有找到相关文章

最新更新