2012-10-31 1 views
1

J'essaie de déplacer plusieurs dossiers volumineux (> 10 Go,> 100 sous-dossiers,> 2000 fichiers) entre les lecteurs réseau. J'ai essayé d'employer la commande de shutil.copytree dans python qui fonctionne bien excepté qu'il ne copie pas un petit pourcentage (< 1% des dossiers) pour différentes raisons. Je crois robocopy est la meilleure option pour moi car je peux créer un fichier journal documentant le processus de transfert. Cependant, comme je dois copier> 1000 dossiers, le travail manuel est hors de question. Donc, ma question est essentiellement comment puis-je appeler robocopy (c'est-à-dire la ligne de commande) à partir d'un script python en s'assurant que le fichier journal est écrit dans un fichier externe.Comment puis-je appeler robocopy dans un script python pour copier en bloc plusieurs dossiers?

Je travaille sur un environnement Windows 7 et Linux/Unix est hors de question en raison de restrictions organisationnelles. Si quelqu'un a d'autres suggestions pour copier en bloc autant de dossiers avec beaucoup de flexibilité, ils sont les bienvenus.

Répondre

6

Subproccess vous permet de faire des appels système. Cela vous permettra d'appeler robocopy comme vous le feriez depuis la ligne de commande.

from subprocess import call 
call(["robocopy", "basefolder newfolder /S /LOG:mylogfile"]) 
0

Comme halfs13 ladite utilisation sous-processus, mais vous pourriez avoir besoin de formater comme si

from subprocess import call call(["robocopy",'fromdir', 'todir',"/S"]) Ou bien il peut lire la source que tout

0

Cela me mettre sur la bonne voie, mais j'avais à virgule séparer les options, par exemple

from subprocess import call 
call(["robocopy", "./", "newfolder/test02", "/S", "/LOG:mylogfile"]) 

Ceci a fonctionné un régal. Le "/ S" a copié tous les sous-dossiers.

Questions connexes