Python3不通过stat检测符号链接
我遇到了一个奇怪的情况,不同的Python模块os和stat vs pathlib以不同的方式识别文件是否为符号链接 让我们以python3二进制文件为例: 如您所见,基于上面的shell命令,它是一个符号链接 如果我使用Python 3.4中引入的模块,这将被成功地标识为符号链接: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
>>> 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