pathlib Path中斜杠运算符和逗号分隔符之间的区别

时间:2018-02-24 19:46:00

标签: python python-3.x pathlib

readpathlib中,我们可以在两条路径之间使用/来创建子路径,其中逗号也可以使用。但是,我无法确定两种情况之间是否存在差异。在以下示例中,输出相同:

from pathlib import Path

p = Path('/hello', 'world')
s = Path(p, 'how', 'are', 'you')
ns = Path(p / 'how', 'are', 'you')

print(s)
print(ns)

但考虑到pathlib是面向对象的,我想幕后可能会有不同的东西。在路径中使用/与逗号相比有什么区别吗?

1 个答案:

答案 0 :(得分:1)

/对象或pathlib.Path对象与Path对象之间使用str运算符的重点是,您可以避免在调用Path时包装所有内容。

>>> from pathlib import Path
>>> p = Path('/hello', 'world')
>>> p / 'how'
PosixPath('/hello/world/how')
>>> p / 'how' / 'are' / 'you'
PosixPath('/hello/world/how/are/you')

区别不在于使用“逗号”和/,而是在使用/和构造函数Path之间。

我想,/应该与joinpath类似:

>>> p.joinpath('how','are','you')
PosixPath('/hello/world/how/are/you')

但是在某个地方你正在创建一个新的Path实例,所以无论如何都要调用Path

请注意,来自docs

  

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

所以他们也有这种行为:

>>> '/etc' / p / '/usr'
PosixPath('/usr')
>>> Path('/etc', p, '/usr')
PosixPath('/usr')