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.