Python3不通过stat检测符号链接

Python3不通过stat检测符号链接,python,linux,python-3.x,ubuntu,filesystems,Python,Linux,Python 3.x,Ubuntu,Filesystems,我遇到了一个奇怪的情况,不同的Python模块os和stat vs pathlib以不同的方式识别文件是否为符号链接 让我们以python3二进制文件为例: 如您所见,基于上面的shell命令,它是一个符号链接 如果我使用Python 3.4中引入的模块,这将被成功地标识为符号链接: >>> from pathlib import Path >>> Path('/usr/bin/python3').is_symlink() True 现在,如果使用和Pyth

我遇到了一个奇怪的情况,不同的Python模块os和stat vs pathlib以不同的方式识别文件是否为符号链接

让我们以python3二进制文件为例:

如您所见,基于上面的shell命令,它是一个符号链接

如果我使用Python 3.4中引入的模块,这将被成功地标识为符号链接:

>>> from pathlib import Path
>>> Path('/usr/bin/python3').is_symlink()
True
现在,如果使用和Python模块代替pathlib,则该文件不会被标识为符号链接:

>>> import os
>>> import stat
>>> st_mode = os.stat('/usr/bin/python3').st_mode
>>> st_mode
33261
>>> stat.S_ISLNK(st_mode)
False
我最初通过Docker for Mac在Docker容器中进行了尝试,然后在一个普通的Ubuntu 16.04中进行了尝试,结果是一样的

知道为什么会这样吗

谢谢

os.stat解析其目标。如果需要有关符号链接本身的信息,请使用os.lstat

这是:

奥斯·斯塔帕斯

在给定路径上执行与stat系统调用等效的操作。此功能遵循符号链接;要统计符号链接,请使用lstat

vs

os.lstatpath

在给定路径上执行相当于lstat系统调用的操作。类似于stat,但不遵循符号链接。在不支持符号链接的平台上,这是stat的别名

os.stat解析其目标。如果需要有关符号链接本身的信息,请使用os.lstat

这是:

奥斯·斯塔帕斯

在给定路径上执行与stat系统调用等效的操作。此功能遵循符号链接;要统计符号链接,请使用lstat

vs

os.lstatpath

在给定路径上执行相当于lstat系统调用的操作。类似于stat,但不遵循符号链接。在不支持符号链接的平台上,这是stat的别名

>>> import os
>>> import stat
>>> st_mode = os.stat('/usr/bin/python3').st_mode
>>> st_mode
33261
>>> stat.S_ISLNK(st_mode)
False