J'ai lu la documentation de cette fonction, cependant, je ne pense pas la comprendre correctement. Si quelqu'un peut me dire ce qui me manque, ou si j'ai raison, ce serait d'une grande aide. Voici ma compréhension:
en utilisant la fonction shutil.rmtree(path)
, il supprimera uniquement le répertoire spécifié, pas le chemin complet. C'EST À DIRE:
shutil.rmtree('user/tester/noob')
en utilisant cela, cela supprimerait seulement le répertoire 'noob' correct? pas le chemin complet?
Si noob est un répertoire, la fonction shutil.rmtree()
supprimera noob
et tous les fichiers et sous-répertoires en dessous. Autrement dit, noob
est la racine de l'arborescence à supprimer.
Cela ne supprimera définitivement que le dernier répertoire du chemin spécifié. Essayez-le:
mkdir -p foo/bar
python
import shutil
shutil.rmtree('foo/bar')
... ne supprimera que 'bar'
.
Il y a un malentendu ici.
Imaginez un arbre comme celui-ci:
- user
- tester
- noob
- developer
- guru
Si vous voulez supprimer user
, faites simplement shutil.rmtree('user')
. Cela supprimera également user/tester
Et user/tester/noob
Car ils se trouvent dans user
. Cependant, il supprimera également user/developer
Et user/developer/guru
, Car ils se trouvent également dans user
.
Si rmtree('user/tester/noob')
supprimait user
et tester
, comment voulez-vous dire que user/developer
Existerait si user
avait disparu?
Ou voulez-vous dire quelque chose comme http://docs.python.org/2/library/os.html#os.removedirs ?
Il essaie de supprimer le parent de chaque répertoire supprimé jusqu'à ce qu'il échoue car le répertoire n'est pas vide. Donc, dans mon exemple d'arbre, os.removedirs('user/tester/noob')
supprimerait d'abord noob
, puis il essaierait de supprimer tester
, ce qui est correct car il est vide, mais il s'arrêterait à user
et laissez-le tranquille, car il contient developer
, que nous ne voulons pas supprimer.