python实现复制大量文件功能


Posted in Python onAugust 31, 2019

本文实例为大家分享了python实现复制大量文件的具体代码,供大家参考,具体内容如下

本来是去项目公司拷数据,结果去了发现有500G,靠系统的复制功能怕是得好几个小时,于是回来学一手操作,话不多说上代码:

说明:CopyFiles1是可以将sourceDir连子目录一起原样复制到targetDir,而CopyFiles2是在sourceDir中筛选特定格式文件,然后将其直接放在targetDir中,会很乱,但是很快

import os
import time
import shutil
sourceDir = r"D:\copytest\datatest"
targetDir = r"D:\copytest\result"
copyFileCounts = 0
 
def CopyFiles1(sourceDir, targetDir):
#完全连子目录也会复制好,美观
  global copyFileCounts
  print(sourceDir )
  print("%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))):
 
        open(targetF, "wb").write(open(sourceF, "rb").read())
        print ("%s %s 复制完毕" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), targetF))
      else:
        print ("%s %s 已存在,不重复复制" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), targetF))
 
    if os.path.isdir(sourceF):
      copyFiles(sourceF, targetF)
 
def CopyFiles2(dir):
  #会将目录下所有文件都复制在一起,速度快,可以筛选文件
  i=0
  for root,dir1,filename in os.walk(dir):
   #print(filename)
   for index in range(len(filename)):
    #print(os.path.splitext(filename[index])[1])
    #if os.path.splitext(filename[index])[1]=='.':#这里注意filename是个元组,splitext方法的时候只能是字符串
    if 1==1:
      #i+=1
      print('here')
      root1="D:\\copytest\\result3"
      old_path = os.path.join(root, filename[index])
      print(old_path)
      new_path = os.path.join(root1,filename[index])
      shutil.copyfile(old_path,new_path)
 
#print("总共有",i,"图层文件被复制!")
 
if __name__ == "__main__":
 time_start = time.time()
 try:
  import psyco
  psyco.profile()
 except ImportError:
   pass
 #CopyFiles1(sourceDir,targetDir)
 CopyFiles2("D:/copytest/datatest")
 time_end = time.time()
 print('totally cost', time_end - time_start)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中urllib模块用法实例详解
Nov 19 Python
python八大排序算法速度实例对比
Dec 06 Python
python的Tqdm模块的使用
Jan 10 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
Nov 29 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
Jan 10 Python
Python常见数据类型转换操作示例
May 08 Python
python进程和线程用法知识点总结
May 28 Python
python IDLE 背景以及字体大小的修改方法
Jul 12 Python
Python输出指定字符串的方法
Feb 06 Python
PyTorch在Windows环境搭建的方法步骤
May 12 Python
python的pip有什么用
Jun 17 Python
python批量修改交换机密码的示例
Sep 22 Python
django 做 migrate 时 表已存在的处理方法
Aug 31 #Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
Aug 31 #Python
解决Django migrate不能发现app.models的表问题
Aug 31 #Python
python django生成迁移文件的实例
Aug 31 #Python
python实现递归查找某个路径下所有文件中的中文字符
Aug 31 #Python
python+django+rest框架配置创建方法
Aug 31 #Python
Python实现Restful API的例子
Aug 31 #Python
You might like
编译问题
2006/10/09 PHP
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
js nextSibling属性和previousSibling属性概述及使用注意
2013/02/16 Javascript
JavaScript计算字符串中每个字符出现次数的小例子
2013/07/02 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
javascript基础知识讲解
2017/01/11 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
2017/08/18 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
nodeJs实现基于连接池连接mysql的方法示例
2018/02/10 NodeJs
jQuery实现的隔行变色功能【案例】
2019/02/18 jQuery
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
Python pickle模块用法实例分析
2015/05/27 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
把pandas转换int型为str型的方法
2019/01/29 Python
python实现浪漫的烟花秀
2019/01/30 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
python调用接口的4种方式代码实例
2019/11/19 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
英国办公用品商店:Office Outlet
2018/04/04 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
介绍一下linux文件系统分配策略
2012/11/17 面试题
装修致歉信
2014/01/15 职场文书
职称评定自我鉴定
2014/03/18 职场文书
2014年法务工作总结
2014/12/11 职场文书
会计岗位职责
2015/02/03 职场文书
综合管理员岗位职责
2015/02/11 职场文书
学生保证书格式
2015/02/27 职场文书
Redis唯一ID生成器的实现
2022/07/07 Redis