Copie de dossiers

Copie de dossiers - Python - Programmation

Marsh Posté le 24-04-2009 à 11:08:43    

Bonjour,
 
Je début dans Python et je suis assez mauvais dans la prog en générale
Voici ma situation :
 
Voici l'arborescence :
C:\MonSoft\MonDossier
C:\MAJ
 
Dans MonDossier j'ai :
AppliCommun
ObjetMetier
Principal
 
Dans Maj j'ai :
AppliCommun
Principal
 
Le but du script est de mettre à jour une application qui se fait par remplacement de dossiers. Par conséquent, je dois premièrement sauvegarder MonDossier puis remplacer par les dossiers de MonDossier par les dossiers et fichiers présents dans MAJ.
A noter que tous les dossiers contiennent plusieurs sous-dossiers ainsi que des fichiers.
 
J'ai fais ça :

Code :
  1. src = r'C:\MAJ'
  2. dst = r'C:\MonSoft\\MonDossier'
  3. for f in os.listdir(src):
  4.     shutil.copy(os.path.join(src, f), os.path.join(dst, f))


 
Mais j'ai cette erreur :

Code :
  1. C:\Python26>python.exe "C:\Documents and Settings\Dje\Bureau\depl.py"
  2. Traceback (most recent call last):
  3.   File "C:\Documents and Settings\Dje\Bureau\depl.py", line 12, in <module>
  4.     shutil.copy(os.path.join(src, f), os.path.join(dst, f))
  5.   File "C:\Python26\lib\shutil.py", line 88, in copy
  6.     copyfile(src, dst)
  7.   File "C:\Python26\lib\shutil.py", line 52, in copyfile
  8.     fsrc = open(src, 'rb')
  9. IOError: [Errno 13] Permission denied: 'C:\\MAJ\\Principal'


Message édité par brandtance le 24-04-2009 à 11:10:57
Reply

Marsh Posté le 24-04-2009 à 11:08:43   

Reply

Marsh Posté le 24-04-2009 à 12:39:44    

T'as pas les droits sur c:\maj\principal.
 
Accessoirement, shutil a une fonction copytree qui fait une copie récursive tout seul comme un grand, pas besoin de faire un combo de listdir & copy.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 24-04-2009 à 12:54:50    

Le problème, c'est que je vois pas pourquoi j'aurais pas les droits. Je suis en local sur mon poste, en admin, je ne suis pas dans un domaine, je suis proprio du dossier....
Pour la commande copytree il me semble qu'il faut que le dossier distant n'existe pas. Or, il existe, je le mets juste à jour....ou je me trompe ?

Reply

Marsh Posté le 24-04-2009 à 12:58:47    

brandtance a écrit :

Pour la commande copytree il me semble qu'il faut que le dossier distant n'existe pas. Or, il existe, je le mets juste à jour....ou je me trompe ?


Ah non, effectivement tu as raison.

 

Mais si tu veux "simplement" sync deux dossiers, ne pourrais tu pas faire appel à rsync en process externe? (ou si les dossiers ne sont pas trop gros, tu supprimes la destination et tu copytree)


Message édité par masklinn le 24-04-2009 à 12:59:12

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 24-04-2009 à 13:04:28    

Ce sont des gros dossiers, contenant plusieurs milliers de fichiers. J'ai mis que 3 dossiers pour simplifier l'exemple...
En gros ce qu'il me faut c'est récupérer les dossier présents dans MAJ pour remplacer les dossiers présent dans MonDossier. Mais dans MAJ je n'ai pas l'intégralité des dossiers présents dans MonDOssier, seulement les dossier à mettre à jour.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed