我试图在网络驱动器之间移动多个大文件夹(> 10 Gb,> 100个子文件夹,> 2000个文件)。我试过在python中使用shutil.copytree命令,它工作正常,只是由于不同的原因,它无法复制一小部分(<1%的文件)。
我相信robocopy对我来说是最好的选择,因为我可以创建一个记录传输过程的日志文件。但是,由于我需要复制> 1000个文件夹,手动工作是毫无疑问的。
所以我的问题本质上是我如何从Python脚本中调用robocopy(即命令行),以确保日志文件被写入外部文件。
我正在Windows 7环境下工作,由于组织限制,Linux/Unix是不可能的。如果有人有任何其他建议,可以灵活地批量复制这么多文件夹,欢迎他们。
6条答案
按热度按时间r3i60tvu1#
Subproccess允许您进行系统调用。这将允许您像从命令行调用robocopy一样调用robocopy。
字符串
k0pti3hp2#
就像halfs13说的使用子进程,但你可能需要像这样格式化它
字符串
否则它可能会把源代码当作一切
eaf3rand3#
使用
os.exec
系列函数之一启动任何外部程序:您可能需要
os.execlp(file, arg0, arg1, ...)
qoefvg9y4#
这让我走上了正确的道路,但我不得不用逗号分隔选项,例如。
字符串
这一招很管用,“/S”复制了所有的字母。
pzfprimi5#
字符串
上面的代码片段就可以做到这一点。
注意:如果
srcDir
和destPath
中有任何白色空间,则cmd.split()
将无法工作。相反,您需要执行以下操作:型
你可以在这里阅读所有关于子进程的信息:https://docs.python.org/3.7/library/subprocess.html
pxy2qtax6#
谢谢昆顿·布莱克和半个13!
我最终得到了这个版本,接受空格非ASCII字符。
字符串