2014-02-09 47 views
0

说我有两条路径:比较文件平等的最佳方式是什么?

derp.py 
/lol/lel/doge/derp.py 

如何检查,如果这两个路径指向同一个文件?我已经看到了两种方式来做到这一点,但是两者都有什么缺点。

os.path.samefile("derp.py", "/lol/lel/doge/derp.py") 
os.path.abspath("derp.py") == os.path.abspath("/lel/lol/doge/derp.py") 

我不特别关心以下符号链接,或者如果其中一个文件不存在。

+1

首先你必须定义“文件的平等”。相同的内容?或者从字面上* *相同*文件(Symlinked)? – Sinkingpoint

+0

我不介意你是比较内容还是符号链接,或者只是路径(没有符号链接),我认为所有这些都适合我。但是,对这些方法的优缺点的描述将会很好。 – hifkanotiks

+1

你是什么意思“不关心其中一个文件是否存在” - 在这种情况下应该发生什么?如果*既不*文件又会发生什么? –

回答

2

如果你不介意的任何文件存在,那么os.path.samefile()不会为你工作,因为它实际上比较节点号。这就让你唯一的选择是比较绝对路径。

+0

谢谢:)这看起来像是正确的答案。如果几个小时内没有更好的产品出现,它会被接受。 – hifkanotiks

0

前者遵守符号链接,而后者不符合。如果您的意图是这些文件是相同的文件,则使用samefile是“正确”的方式。如果你只是想检查路径指向同一个地方(忽略符号链接),你可以使用后者。

相关问题