remove - shutil python 3
clarificación de shutil.rmtree() (3)
He leído el documento sobre esta función, sin embargo, no creo que esté entendiendo esto correctamente, y si alguien puede decirme qué estoy pensando mal, o si estoy en lo cierto, sería de gran ayuda. Aquí está mi entendimiento:
utilizando la función shutil.rmtree(path)
, eliminará solo el directorio especificado, no la ruta completa. ES DECIR:
shutil.rmtree(''user/tester/noob'')
usando esto, solo eliminaría el directorio ''noob'' correcto? no es el camino completo?
Esto definitivamente solo eliminará el último directorio en la ruta especificada. Solo pruébalo:
mkdir -p foo/bar
python
import shutil
shutil.rmtree(''foo/bar'')
... solo eliminará ''bar''
.
Hay algunos malentendidos aquí.
Imagina un árbol como este:
- user
- tester
- noob
- developer
- guru
Si desea eliminar user
, simplemente haga shutil.rmtree(''user'')
. Esto también eliminará user/tester
y user/tester/noob
ya que están dentro del user
. Sin embargo, también eliminará user/developer
y user/developer/guru
, ya que también están dentro del user
.
Si rmtree(''user/tester/noob'')
eliminaría el user
y el tester
, ¿cómo quiere decir que el user/developer
existiría si el user
se hubiera ido?
¿O te refieres a algo como http://docs.python.org/2/library/os.html#os.removedirs ?
Intenta eliminar el elemento primario de cada directorio eliminado hasta que falla porque el directorio no está vacío. Por lo tanto, en mi árbol de ejemplo, os.removedirs(''user/tester/noob'')
eliminaría el primer noob
, luego trataría de eliminar el tester
, lo cual está bien porque está vacío, pero se detendría en el user
y lo dejaría en paz, porque contiene developer
, que no queremos eliminar.
Si noob es un directorio, la función shutil.rmtree()
eliminará noob
y todos los archivos y subdirectorios debajo de él. Es decir, noob
es la raíz del árbol que se eliminará.