2012-10-31 1 views
1

네트워크 드라이브간에 여러 개의 큰 폴더 (> 10GB,> 100 개의 하위 폴더,> 2000 개 파일)를 이동하려고합니다. 나는 다른 이유로 작은 백분율 (< 파일의 1 %)을 복사하지 못하는 것을 제외하고는 잘 작동하는 python에서 shutil.copytree 명령을 사용하여 시도했다.어떻게 파이썬 스크립트 내에서 robocopy를 호출하여 여러 폴더를 대량 복사 할 수 있습니까?

robocopy가 전송 프로세스를 문서화하는 로그 파일을 만들 수있는 가장 좋은 방법이라고 생각합니다. 그러나 내가> 1000 폴더 수동 작업을 복사해야합니다 밖으로 질문입니다.

그래서 내 질문은 본질적으로 로그 파일이 외부 파일로 작성되었는지 확인하는 python 스크립트 내에서 robocopy (즉 명령 줄)를 호출 할 수 있습니다.

저는 Windows 7 환경에서 작업하고 있으며 Linux/Unix는 조직의 제약으로 문제가되지 않습니다. 다른 많은 제안 사항이 있으면 많은 폴더를 대량으로 복사하여 많은 융통성을 가지고 있습니다. 기능의 os.exec 가족의

답변

6

Subproccessos.execlp(file, arg0, arg1, ...) 당신이 시스템 호출을 할 수 있도록합니다. 이렇게하면 명령 줄에서와 같이 robocopy를 호출 할 수 있습니다. 이 옳은 길에 저를 넣어하지만 내가 가진 halfs13처럼

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

사용 서브 프로세스를 말했지만 그렇게

from subprocess import call call(["robocopy",'fromdir', 'todir',"/S"]) 같은 포맷해야 할 수도 아니면이

0

모든으로 소스를 읽을 수 있습니다 쉼표로 옵션을 구분합니다 (예 :

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

이것은 효과가있었습니다. "/ S"는 모든 하위 폴더를 복사했습니다.