浏览 6195 次
锁定老帖子 主题:python文件夹复制
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-25
最后修改:2010-09-29
使用windows的文件夹复制,发现经常在复制一部分文件后,因某些莫名其妙的原因被中断(提示某个文件复制失败,网络被断开,可能是由于网络不稳定),然后就要从头再来,搞了几个小时还没有搞完,烦死 就想到用python写个脚本来做这个事情:文件已经存在并且大小一致时不重复复制加快处理速度 代码如下 #! /usr/bin/env python # -*- coding: utf-8 -*- #@author zcwang3@gmail.com #@version 2010-09-25 14:57 import os import time sourceDir = r"\\192.168.3.250\mmtimages" targetDir = r"D:\mmtimages" copyFileCounts = 0 def copyFiles(sourceDir, targetDir): global copyFileCounts print sourceDir print u"%s 当前处理文件夹%s已处理%s 个文件" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), sourceDir,copyFileCounts) for f in os.listdir(sourceDir): sourceF = os.path.join(sourceDir, f) targetF = os.path.join(targetDir, f) if os.path.isfile(sourceF): #创建目录 if not os.path.exists(targetDir): os.makedirs(targetDir) copyFileCounts += 1 #文件不存在,或者存在但是大小不同,覆盖 if not os.path.exists(targetF) or (os.path.exists(targetF) and (os.path.getsize(targetF) != os.path.getsize(sourceF))): #2进制文件 open(targetF, "wb").write(open(sourceF, "rb").read()) print u"%s %s 复制完毕" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), targetF) else: print u"%s %s 已存在,不重复复制" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), targetF) if os.path.isdir(sourceF): copyFiles(sourceF, targetF) if __name__ == "__main__": try: import psyco psyco.profile() except ImportError: pass copyFiles(sourceDir,targetDir) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-09-26
distutils.dir_util.copy_tree does what you want.
Copy an entire directory tree src to a new location dst. Both src and dst must be directory names. If src is not a directory, raise DistutilsFileError. If dst does not exist, it is created with mkpath(). The end result of the copy is that every file in src is copied to dst, and directories under src are recursively copied to dst. Return the list of files that were copied or might have been copied, using their output name. The return value is unaffected by update or dry_run: it is simply the list of all files under src, with the names changed to be under dst. |
|
返回顶楼 | |
发表时间:2010-09-29
用python写的程序发现每秒大概能复制6 7 个图片文件(每个100k左右)
后来找到工具FastCopy,每秒大概能复制11个左右,速度更快,还有一些容错的功能 就直接用FastCopy,上面的代码就放弃了 |
|
返回顶楼 | |
发表时间:2010-10-08
让我想起rsync。
|
|
返回顶楼 | |