3

在 Python 3.4 和 Ubuntu 14.04 中使用此代码不会返回True

import pathlib

path1 = pathlib.Path("/tmp")
path2 = pathlib.Path("/tmp/../tmp")

print(path1 == path2)
# gives False

print(path1 is path2)
# gives False

但通常“/tmp”和“/tmp/../tmp”是同一个文件夹。那么如何确保比较返回 True 呢?

4

2 回答 2

10

要进行比较,您应该首先解析路径,或者您也可以使用os.path.samefile。例子:

print(path1.resolve() == path2.resolve())
# True       

import os
print(os.path.samefile(str(path1), str(path2)))
# True

顺便说一句,检查path1 is path2是否与实际路径path1相同,path2而不是比较实际路径。

于 2014-05-26T23:50:16.407 回答
2

对于使用比 OP 更新的 python 版本的任何人:从 python 3.5 开始,您还可以使用path1.samefile(path2),请参阅文档

于 2021-01-15T17:21:18.377 回答