【问题标题】:Difference between slash operator and comma separator in pathlib Pathpathlib Path中斜杠运算符和逗号分隔符之间的区别
【发布时间】:2018-02-24 19:45:59
【问题描述】:

我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 中使用 / 与逗号对比有区别吗?

【问题讨论】:

    标签: python python-3.x pathlib


    【解决方案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')
    

    【讨论】:

      猜你喜欢
      • 2014-08-05
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多