如何确定给定目录是否在Python中是“符号链接”?

时间:2013-12-06 09:10:45

标签: python linux

我正在尝试删除一组目录,不包括那些正在使用的目录和symlink编辑到其他目录。

确定给定目录是否为symlink的最有效方法是什么?

我已经尝试了os.stat(dir).mt_nlink,但即使对于我想删除的目录,也会返回3

修改

symlinked我的意思是这个目录是某个符号链接的目标。

3 个答案:

答案 0 :(得分:5)

没有简单的方法可以确定其他人是否已经建立了指向“硬”目录的链接。您只能检查给定目录是否是另一个目录的符号链接。

这意味着您需要遍历整个目录结构,查找符号链接,然后检查它们是否指向相关目录。

符号链接是一个特殊文件,指向目录结构中某处的另一个文件/目录。符号链接也可以指向其他文件系统。创建符号链接不会更改目标文件/文件夹的inode(而不是硬链接),因此您无法通过查看目标来判断,只能在链接本身。

答案 1 :(得分:2)

使用os.path.islink(path)

直接来自文档:

  

如果path引用符号的目录条目,则返回True   链接。如果不支持符号链接,则始终为False。

答案 2 :(得分:0)

使用os.path.islink

您还可以使用os.path.lexists测试路径是否为断开的链接(如果lexists() and not exists()文件是一个断开的链接)。