【问题标题】:What's the best way to compare the equality of files?比较文件相等性的最佳方法是什么?
【发布时间】:2014-02-17 19:55:36
【问题描述】:

假设我有 2 条路径:

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")

我并不特别关心以下符号链接或其中一个文件是否不存在。

【问题讨论】:

  • 首先你必须定义“文件的平等”。一样的内容?还是字面上的 same 文件(符号链接)?
  • 我不介意你是比较内容,还是符号链接,或者只是路径(没有符号链接),我认为所有这些都对我有用。但是,最好描述一下这些方法的优缺点。
  • 你是什么意思“不关心文件是否不存在” - 在这种情况下应该发生什么?如果都不存在文件会发生什么?
  • 这可能会有所帮助:stackoverflow.com/questions/3212712/…
  • @KarlKnechtel 如果其中一个不存在,那么文件当然不一样! (但其中之一应该始终存在。)

标签: python os.path


【解决方案1】:

如果您不关心是否存在任何文件,那么os.path.samefile() 将不适合您,因为它实际上比较 i 节点编号。这使您只能选择比较绝对路径。

【讨论】:

  • 谢谢 :) 这看起来是正确的答案。如果几个小时后没有更好的来,将标记为已接受。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2010-09-22
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多