给定两条路径,如果它们指向同一个文件,我必须进行比较。在Unix中,这可以完成 os.path.samefile
,但正如文档所述,它在Windows中不可用。
模拟此功能的最佳方法是什么?
它不需要模拟常见情况。在我的情况下,有以下简化:
现在我使用以下内容:
def samefile(path1, path2)
return os.path.normcase(os.path.normpath(path1)) == \
os.path.normcase(os.path.normpath(path2))
这个可以吗?
根据 问题#5985 os.path.samefile和os.path.sameopenfile现在在py3k中。我在Python 3.3.0上验证了这一点
对于旧版本的Python,这是一种使用 GetFileInformationByHandle 功能:
see_if_two_files_are_the_same_file
os.stat系统调用返回一个元组,其中包含有关每个文件的大量信息 - 包括创建和最后修改时间戳,大小,文件属性。具有相同参数的不同文件的机会非常小。我认为这是非常合理的:
def samefile(file1, file2):
return os.stat(file1) == os.stat(file2)
真实的用例 os.path.samefile
不是象征性的联系,而是 硬 链接。 os.path.samefile(a, b)
如果返回True a
和 b
都是同一文件的硬链接。他们可能没有相同的路径。