pathlib路径中斜杠运算符和逗号分隔符的区别
Difference between slash operator and comma separator in pathlib Path
我 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
是高度面向对象的,我想幕后可能有些不同。在 Path 中使用 /
与逗号相比有区别吗?
在 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')
区别不在使用 "a comma" 和 /
之间,而是在使用 /
和构造函数 Path
.
之间
我想,/
应该类似于 joinpath
:
>>> p.joinpath('how','are','you')
PosixPath('/hello/world/how/are/you')
但是在幕后某处您正在创建一个新的 Path
实例,所以 Path
无论如何都会被调用。
注,来自docs:
When several absolute paths are given, the last is taken as an anchor
(mimicking os.path.join()’s behaviour):
所以他们也有这种行为:
>>> '/etc' / p / '/usr'
PosixPath('/usr')
>>> Path('/etc', p, '/usr')
PosixPath('/usr')
我 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
是高度面向对象的,我想幕后可能有些不同。在 Path 中使用 /
与逗号相比有区别吗?
在 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')
区别不在使用 "a comma" 和 /
之间,而是在使用 /
和构造函数 Path
.
我想,/
应该类似于 joinpath
:
>>> p.joinpath('how','are','you')
PosixPath('/hello/world/how/are/you')
但是在幕后某处您正在创建一个新的 Path
实例,所以 Path
无论如何都会被调用。
注,来自docs:
When several absolute paths are given, the last is taken as an anchor (mimicking os.path.join()’s behaviour):
所以他们也有这种行为:
>>> '/etc' / p / '/usr'
PosixPath('/usr')
>>> Path('/etc', p, '/usr')
PosixPath('/usr')