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。
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 tob
, willos.path.samefile("a", "b")
returnTrue
orFalse
?
这应该 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。