检查文件是否为符号链接
这是一小部分代码:
导入操作系统
从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