如何删除python中的符号链接?

aks*_*c11 21 python symlink

我一直在尝试删除工作目录中的一些符号链接,但我遇到了一些问题.

os.remove 还会删除链接原始文件夹的实际内容

os.shutil 在符号链接的情况下抛出错误.

有没有办法在不破坏原始内容的情况下使用python命令删除符号链接?

谢谢

sam*_*ces 25

os.unlink()适合我.它删除符号链接而不删除它链接到的目录.

  • Python 2.7文档说明了unlink:`这与remove();`的功能相同,它是如何解决问题的呢? (16认同)

MOn*_*DaR 11

接受的答案不适用于通过创建链接的 Windows mklink /D。如果这是您的问题,答案已发布在这个问题中:删除 Windows 上目录的符号链接

以下代码应该适用于两个系统:

if(os.path.isdir(targetLink)):
    os.rmdir(targetLink)
else:
    os.unlink(targetLink)
Run Code Online (Sandbox Code Playgroud)


aks*_*c11 6

抱歉,我的错,我犯了一个愚蠢的编程错误:我愚蠢地删除了源代码而不是链接。

正确答案是@samfrances。

os.unlink就可以了。

除此之外,如果您想使用 python 清除目录,这里还有一些其他提示:

绝对不是线程安全的,但你明白了......

def rm(obj):

    if os.path.exists(obj):
        if os.path.isdir(obj):
            if os.path.islink(obj):
                 os.unlink(obj)
            else:
                shutil.rmtree(obj)
        else:
            if os.path.islink(obj):
                os.unlink(obj)
            else:
                os.remove(obj)
Run Code Online (Sandbox Code Playgroud)