os.path.samefile 是否跟随符号链接?

Does os.path.samefile follow symbolic links?

Python的os.path.samefile函数判断两个路径是否指向同一个文件。

如果 a 是指向 b 的符号链接的路径,那么 os.path.samefile("a", "b") return True 还是 False?是否保证跨操作系统和文件系统?

如您所见,os.path.samefile uses os.stat。 stat 遵循符号链接:

This function normally follows symlinks; to stat a symlink add the argument follow_symlinks=False, or use lstat().

This function can support specifying a file descriptor and not following symlinks.

回到你的问题:

If a is the path to a symlink that points to b, will os.path.samefile("a", "b") return True or False?

这应该 return True 因为 stat 默认遵循符号链接。

如果在这种情况下您需要 returns False 的函数,您可以简单地使用您已经找到的代码创建您自己的函数,并且 follow_symlinks=False with stat .

Is that guaranteed across OSes and filesystems?

这是一个艰难的过程。尽管许多 high-level 语言试图向用户隐藏底层系统的细节,但一些操作几乎总是依赖于系统的。文件 IO 通常属于此类。事实上,文件 IO 也依赖于文件系统——如果您在同一台主机上安装了两个不同的文件系统,那么相同的代码在两个文件系统上的行为可能会有所不同。

实际上,大多数文件系统在大多数情况下的行为都相似——您只需要知道边缘情况确实存在。这就是存在标准的原因。如果您的系统是 POSIX-compliant、SUS-compliant 或 UNIX-based。 True 可能会一直 returned。