检查文件是否为符号链接失败

检查文件是否为符号链接
这是一小部分代码:
导入操作系统
从Stat Import *
filepath ="/home/xyz/symlinktest"
模式= os.stat(filepath)[st_mode]
打印"使用OS.Path:",OS.Path.islink(FilePath)打印
打印"使用模式查找:",s_islnk(模式)
打印'这是一个常规文件:'s_isreg(mode)
输出 :
------------------
使用OS.Path:true
使用模式查找:false
这是一个常规文件:true
文件SymlinkTest是一个符号链接.
为什么s_islnk(模式)返回false和s_isreg(mode)返回true?

# 回答1


因为您使用的是OS.stat()而不是OS.lstat(). http://docs.python.org/lib/os-file-dir.html
克里斯蒂安
# 回答2


8月28日,3:11*下午,基督徒heimes
  • 因为您使用的是OS.stat()而不是OS.lstat(). http://docs.python.org/lib/os-file-dir.html
    基督教
    您的意思是弃用以下内容吗? http://docs.python.org/lib/module-stat.html
    从文档 -
    s_islnk(模式)
    如果该模式来自符号链接,则返回非零.
    谢谢
    -saswat
  • # 回答3


    Saswat写道:
    因为您使用的是OS.stat()而不是OS.lstat().

    您的意思是弃用以下内容吗? http://docs.python.org/lib/module-stat.html
    s_islnk(模式)
    如果该模式来自符号链接,则返回非零.
    不,这意味着OS.STAT遵循符号链接并给出STAT
    符号链接指向的文件的信息,
    *不是*符号链接.就像LSTAT的文档一样,"喜欢
    stat(),但不遵循符号链接."但是为什么不只是使用
    OS.Path.islink?
    -Miles

    # 回答4


    s_islnk(模式)
    如果该模式来自符号链接,则返回非零.
    如该页面所述,这是用于解释模式标志的函数
    由OS.STAT,OS.FSTAT或OS.LSTAT返回.显然不会给你
    如果您使用 *遵循 *的统计功能,则您正在寻找的结果
    符号链接.
    # 回答5


    8月28日,10:20*PM,Fredrik Lundh 如该页面所述,这是用于解释模式标志的函数
    由OS.STAT,OS.FSTAT或OS.LSTAT返回. *显然不会给你
    如果您使用 *遵循 *的统计功能,则您正在寻找的结果
    符号链接.

    谢谢弗雷德里克和迈尔斯,
    stat()在实际文件上,而不在符号链接上.这解释了.
    -saswat

    标签: python

    添加新评论