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á.