【发布时间】:2012-09-22 14:14:13
【问题描述】:
我想删除符号链接以及源目录。
例如——
ls -lrt
testsymlink -> /user/temp/testdir
我想同时删除 testsymlink 和 /user/temp/testdir。考虑到我知道唯一的符号链接名称。
任何带有 python 的实用程序都会做得很好。
【问题讨论】:
我想删除符号链接以及源目录。
例如——
ls -lrt
testsymlink -> /user/temp/testdir
我想同时删除 testsymlink 和 /user/temp/testdir。考虑到我知道唯一的符号链接名称。
任何带有 python 的实用程序都会做得很好。
【问题讨论】:
编辑:我没有看到您需要 python 中的解决方案:这仅在 unix shell 中相关。尽管您可以将以下两个命令包装在 os.system() 调用中,但我强烈建议您遵循 Tim 的回答。
要获取符号链接指向的对象的路径,可以使用readlink:
$ readlink testsymlink
/user/temp/testdir
要删除符号链接指向的对象,您可以将readlink 的输出传递给rm:
$ rm -r `readlink testsymlink`
反引号导致它们内部的命令运行,然后替换为它自己的输出。最后,要删除符号链接本身,我们只需运行:
$ rm testsymlink
【讨论】:
shell,所以 +1 以获得同样好的解决方案。我只是不确定假设 Tim 在下面的回答 是否永远成立;-)
您可以使用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)
【讨论】: