【问题标题】:How can I determine if a given directory is `symlink`ed to in Python?如何确定给定目录是否在 Python 中被“符号链接”到?
【发布时间】:2013-12-23 13:48:30
【问题描述】:

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

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

我尝试过os.stat(dir).mt_nlink,但即使对于我要删除的目录,它也会返回3

编辑

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

【问题讨论】:

标签: python linux


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    使用os.path.islink(path)

    直接来自文档:

    如果路径引用了一个符号目录条目,则返回 True 关联。如果不支持符号链接,则始终为 False。

    【讨论】:

      【解决方案3】:

      使用os.path.islink

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

      【讨论】:

      • 如果您已经知道路径是符号链接,则无需调用 lexists 来查看它是否损坏 - not exists(link) 就足够了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-12
      • 2019-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多