Python 为什么pathlib.Path(";).parent不返回"&引用;?

Python 为什么pathlib.Path(";).parent不返回"&引用;?,python,path,pathlib,Python,Path,Pathlib,使用pathlib,我似乎无法正确获取“的父级: >>路径(“.”)。父级 PosixPath(“.”) 更糟糕的是,Path(“.”是它自己的父级: 路径(“.”。父项==路径(“.”) 符合事实的 我期望的是路径(“.”)。父项==Path(“…”——我缺少什么 编辑:我知道这是有文档记录的,但我感兴趣的是为什么会出现这种情况,特别是考虑到路径(“some.file”)==路径(“.”(如预期)。根据: 这是一个纯粹的词汇操作 及 您不能越过锚点或空路径 它在一个例子中特别指出了这种行为

使用
pathlib
,我似乎无法正确获取
的父级:

>>路径(“.”)。父级
PosixPath(“.”)
更糟糕的是,
Path(“.”
是它自己的父级:

路径(“.”。父项==路径(“.”) 符合事实的 我期望的是路径(“.”)。父项==Path(“…”——我缺少什么

编辑:我知道这是有文档记录的,但我感兴趣的是为什么会出现这种情况,特别是考虑到
路径(“some.file”)==路径(“.”
(如预期)。

根据:

这是一个纯粹的词汇操作

您不能越过锚点或空路径

它在一个例子中特别指出了这种行为:

>>> p = PurePosixPath('.')
>>> p.parent
PurePosixPath('.')
它不是解析路径并找到实际的父级,而是使用它拥有的字符串并返回给定该字符串的最佳答案

在获取父对象之前,必须先调用。比如说

Path('.').resolve().parent

将给出正确答案。

您应该在来这里之前开始-它解决了这一问题。@user2357112supportsMonica文档说“您不能通过锚或空路径”-他们没有说明原因。原因是“这是一个纯粹的词汇操作”。它没有解析任何路径,只是使用它拥有的字符串,并返回给定该字符串的最佳答案。@Kemp返回
对于
,“只使用它拥有的字符串”是非常可能的。如果
不是每种情况下的最佳答案,那么为什么?我不能使用纯词法操作,返回
“。
作为“
”?(可能我误解了词法的含义。)在这个例子中,我认为这意味着它只是检查给定的字符串,而不是试图将它与实际路径联系起来。所以它会将字符串拆分,尝试删除最后一段,然后将其余部分重新连接在一起。对不起,这种解释无法说服我。如果是真的,那么为什么
Path(“file.txt”).parent
返回
Path(“.”
?原始路径不包含任何
。简单回答:我不知道,我没有编写代码或文档。作为猜测,如果路径中的东西用完了,并且看起来像是相对路径,那么它只返回
。无论哪种方式,这都是有文档记录的行为,“为什么”是因为它没有解析任何路径,它只是使用它拥有的字符串,并返回给定该字符串所能找到的最佳答案。返回
作为
的父级是否有意义?可能地但他们不得不打电话询问他们愿意添加多少特殊案例,结果很可能是“没有”。每个特殊情况都会增加更多的测试负载、更多的文档负载,并诱使更多的人认为他们自己的特殊情况在可能不适合的情况下也会得到满足。