3

我想删除符号链接以及源目录。

例如 -

ls -lrt
testsymlink -> /user/temp/testdir

我想同时删除testsymlink/user/temp/testdir。考虑到我知道唯一的符号链接名称。

任何带有 python 的实用程序都会做得很好。

4

2 回答 2

5

您可以使用 的结果os.path.realpath来检测和删除符号链接目标。例子:

import os

# ./foo -> ./bar
filepath = "./foo"

if (os.path.realpath(filepath) != filepath):
    targetpath = os.path.realpath(filepath)

os.remove(filepath)
if (targetpath):
     os.remove(targetpath)
于 2012-10-01T17:44:08.947 回答
3

编辑:我没有看到你想要 python 中的解决方案:这都只在 unix shell 中相关。尽管您可以将以下两个命令包装在一个os.system()电话中,但我强烈建议您遵循 Tim 的回答。

要获取符号链接指向的对象的路径,您可以使用readlink

$ readlink testsymlink
/user/temp/testdir

要删除符号链接指向的对象,您可以将输出传递readlinkrm

$ rm -r `readlink testsymlink`

反引号导致它们内部的命令运行,然后用它自己的输出替换。最后,要删除符号链接本身,我们只需运行:

$ rm testsymlink
于 2012-10-01T17:46:26.157 回答