Cada vez que trato de usarlos para eliminar directorios con cosas en ellos, aparece este mensaje de error
import os os.chdir('/Users/mustafa/Desktop') os.makedirs('new-file/sub-file') os.removedirs('new-file')"/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", línea 170, en removeirs rmdir(name) OSError: [Errno 66] Directorio no vacío: 'nuevo archivo'
Sin embargo, creo que vi a personas que usaban esos comandos para eliminar directorios que no estaban vacíos, entonces, ¿qué estoy haciendo mal? Gracias
Debería usar shutil.rmtree para eliminar el directorio de forma recursiva:
import shutil shutil.rmtree('/path/to/your/dir/')Respuesta a tu pregunta:
¿Se
os.removedirsyos.rmdirsolo para eliminar directorios vacíos?
Sí, solo se pueden usar para eliminar directorios vacíos.
A continuación se muestra la descripción del documento oficial de Python que lo establece claramente.
os.rmdir(path, *, dir_fd=None)
Eliminar (eliminar) la ruta del directorio. Solo funciona cuando el directorio está vacío ; de lo contrario, se genera OSError. Para eliminar árboles de directorios completos, se puede usar shutil.rmtree().
Eliminar directorios recursivamente. Funciona como
rmdir()excepto que, si el directorio hoja se elimina con éxito, removers() intenta eliminar sucesivamente todos los directorios principales mencionados en la ruta hasta que se genera un error (que se ignora, porque generalmente significa que un directorio principal no está vacío ). Por ejemplo, os.removedirs('foo/bar/baz') primero eliminará el directorio 'foo/bar/baz' y luego eliminará 'foo/bar' y 'foo' si están vacíos . Genera OSError si el directorio hoja no se pudo eliminar con éxito.