如何在python中检查文件是否不是符号链接

如何在python中检查文件是否不是符号链接,python,filesystems,Python,Filesystems,当前运行的代码是: for y in checkdirlist: if (y in no_exec or y.endswith(".ebuild")) and \ stat.S_IMODE(os.stat(os.path.join(checkdir, y)).st_mode) & 0o111: stat与symlink文件一起失败 我想添加一些检查y是否为符号链接 lstat解决了系统错误问题,但一般来说还没有结束 Traceback (most recent

当前运行的代码是:

for y in checkdirlist:
    if (y in no_exec or y.endswith(".ebuild")) and \
        stat.S_IMODE(os.stat(os.path.join(checkdir, y)).st_mode) & 0o111:
stat与symlink文件一起失败

我想添加一些检查y是否为符号链接

lstat
解决了系统错误问题,但一般来说还没有结束

Traceback (most recent call last):
  File "/usr/bin/repoman", line 1385, in <module>
    myaux = dict(zip(allvars, portdb.aux_get(cpv, allvars)))
  File "/usr/lib/portage/pym/portage/dbapi/porttree.py", line 435, in aux_get
    myebuild, mylocation = self.findname2(mycpv, mytree)
  File "/usr/lib/portage/pym/portage/dbapi/porttree.py", line 308, in findname2
    raise InvalidPackageName(mycpv)
portage.exception.InvalidPackageName: dev-haskell/.#hakyll-9999
回溯(最近一次呼叫最后一次):
文件“/usr/bin/repoman”,第1385行,在
myaux=dict(zip(allvars,portdb.aux_-get(cpv,allvars)))
文件“/usr/lib/portage/pym/portage/dbapi/porttree.py”,第435行,在aux_get中
myebuild,mylocation=self.findname2(mycpv,mytree)
findname2中的第308行文件“/usr/lib/portage/pym/portage/dbapi/porttree.py”
提升InvalidPackageName(mycpv)
portage.exception.InvalidPackageName:dev haskell/.#hakyll-9999

我想筛选这些文件,以便知道哪些是符号链接。

从文档中,您可能需要:

os.path.islink(路径)


从文档中,您可能需要:

os.path.islink(路径)


您是否考虑过使用
os.lstat
而不是
os.stat
?不,我对python非常陌生。只想修补现有的项目。stat和lstat之间的核心区别是什么?
stat
遵循符号链接并返回通过链接指向的文件的stat(如果其中任何一个指向不存在的路径,则返回失败),而
lstat
返回链接的stat而不遵循链接。是否有什么原因导致
os.path.islink(y)
无法工作?[顺便说一句,非修辞性的——我经常不考虑一些特殊情况。]顺便说一句,你不需要反斜杠,在括号内你可以自由换行。你考虑过使用
os.lstat
而不是
os.stat
?不,我对python很陌生。只想修补现有的项目。stat和lstat之间的核心区别是什么?
stat
遵循符号链接并返回通过链接指向的文件的stat(如果其中任何一个指向不存在的路径,则返回失败),而
lstat
返回链接的stat而不遵循链接。是否有什么原因导致
os.path.islink(y)
无法工作?[顺便说一句,非修辞性的——我经常不考虑一些特殊情况。]顺便说一句,你不需要反斜杠,在括号内你可以自由地断线
Return True if path refers to a directory entry that is a symbolic link. 
Always False if symbolic links are not supported.