symbolic remove link drop python symlink

remove - ¿Cómo borrar un enlace simbólico en python?



remove symbolic link debian (4)

He estado tratando de eliminar algunos enlaces simbólicos en mi directorio de trabajo, pero estoy enfrentando algunos problemas.

os.remove también elimina el contenido real de la carpeta original del enlace

os.shutil arroja un error en caso de enlaces simbólicos.

¿Hay alguna forma de eliminar un enlace simbólico usando comandos de python sin destruir el contenido original?

Gracias


La respuesta aceptada no funciona en Windows con enlaces creados a través de mklink /D Si ese es su problema, la respuesta se ha publicado en esta pregunta: Eliminar enlace simbólico al directorio en Windows

El siguiente código debería funcionar en ambos sistemas:

if(os.path.isdir(targetLink)): os.rmdir(targetLink) else: os.unlink(targetLink)


Lo siento, mi error, había cometido un error de programación estúpido: estaba eliminando estúpidamente la fuente en lugar de los enlaces.

La respuesta correcta es por @samfrances.

os.unlink hace el truco.

Además de esto, aquí hay algunos otros consejos si desea borrar un directorio usando python:

Definitivamente no es seguro para hilos, pero tienes la idea ...

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)


Si el nombre del directorio contiene una barra diagonal, el comando linux rm seguirá el enlace e intentará eliminar el directorio. Consulte Eliminar un enlace simbólico a un directorio . La documentation os.remove dice que le dará un OSError si intenta eliminar un directorio, pero tal vez eso no siempre sucede en el caso de enlaces simbólicos.


os.unlink() funciona para mi. Elimina el enlace simbólico sin eliminar el directorio al que se vincula.