Bonjour,

Voilà un petit moment que je galère pour faire un truc qui me semble tout bête.
J'ai un répertoire quelque part sur mon DD qui contient des fichiers, des sous répertoires, des sous-sous-répertoires avec d'autres fichiers ...

Je souhaite pouvoir faire une "action" sur les fichiers et les copier après l'action dans un répertoire cible en gardant la même arborescence que celle du répertoire de départ.

J'utilise la méthode os.walk, mais avec cette méthode je n'arrive pas à obtenir le chemin pour créer la nouvelle arborescence dans le répertoire cible.
La seule solution que j'ai trouvée, c'est de manipuler la chaine de caractères contenant le chemin complet et de remplacer le début de la chaine par ma cible ?
Et ensuite de faire la copie en créant les répertoires s'ils n'existent pas.

Existe-t-il un moyen plus simple ou plus propre ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
for dossier, sous_dossier, fichiers in os.walk(rep):
   for fichier in fichiers:
      # Action sur le fichier ...
      depart = os.path.join(dossier, fichier)
      rep_cible = dossier.replace(rep, "/repertoire_cible")
      cible = os.path.join(rep_cible, fichier)
      print(depart, cible, sep = " -> ")
      if not os.path.isdir(rep_cible):
         os.makedirs(rep_cible)
      shutil.copy(depart, cible)