在Python 3.4中,比较路径的最佳/最简单方法是什么?

时间:2014-05-26 23:45:48

标签: python python-3.x path pathlib

在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?

3 个答案:

答案 0 :(得分:4)

要比较您应首先resolve路径,或者您也可以使用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是同一个对象,而不是比较实际路径。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

this page上尝试一些功能。我想你可以调用os.path.normpath(path)或类似的函数。

相关问题