【发布时间】:2017-07-27 18:28:20
【问题描述】:
我遇到了一个奇怪的情况,似乎不同的 Python 模块(os 和 stat 与 pathlib)以不同的方式识别文件是否是符号链接。
我们以python3 二进制文件为例:
paris@pk-tools:~$ ls -la /usr/bin/python3
lrwxrwxrwx 1 root root 9 Mar 23 2016 /usr/bin/python3 -> python3.5
如您所见,根据上面的shell命令,它是一个符号链接。
如果我使用 Python 3.4 中引入的pathlib 模块,这将被成功识别为符号链接:
>>> from pathlib import Path
>>> Path('/usr/bin/python3').is_symlink()
True
现在,如果我使用os 和stat 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 中进行了尝试,结果是一样的。
知道为什么会发生这种情况吗?
谢谢!
【问题讨论】:
标签: python linux python-3.x ubuntu filesystems