Je crois que je n'avais pas bien compris ce que tu cherchais à faire.
J'ai relu ton 1er message, et je vois pourquoi ça ne marche pas.
root_path est la racine de l'arborescence. Elle représente le début de la recherche, et ne bouge pas pendant la recherche.
Dans chaque boucle for, os.walk examine de façon récursive chacun des sous-répertoires de l'arborescence dont il donne l'adresse:root, et son contenu: files et dirs.
Mais si dans une boucle donnée (donc dans un sous-répertoire donné root) tu veux copier l'un des fichiers (de la liste files) dans l'un des sous-répertoires (de la liste dirs):
- le fichier que tu veux copier a pour adresse os.path.join(root, file)
- et tu le copies dans os.path.join(root, dir)
shutil.copy2(os.path.join(root, file), os.path.join(root, dir))
En utilisant root_path au lieu de root, tu restes au 1er niveau de l'arborescence. C'est ce qu'avait dit Sve@r avec d'autres mots.
Par ailleurs, je te suggère d'utiliser copy2 qui copie en plus certains paramètres des fichiers. Et si tu veux que ce soit un déplacement, il faut en plus supprimer le fichier copié de son emplacement d'origine.
Il reste qu'en changeant l'arborescence tout en la parcourant, je ne sais pas ce que ça va donner: à tester!
Partager