我read在pathlib
中,我们可以在两条路径之间使用/
来创建子路径,其中逗号也可以使用。但是,我无法确定两种情况之间是否存在差异。在以下示例中,输出相同:
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
是面向对象的,我想幕后可能会有不同的东西。在路径中使用/
与逗号相比有什么区别吗?
答案 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')