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中用Descriptor实现类级属性(Property)详解
Sep 18 Python
Python中的多重装饰器
Apr 11 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
Nov 21 Python
Python处理文本换行符实例代码
Feb 03 Python
使用Python设计一个代码统计工具
Apr 04 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
python3实现高效的端口扫描
Aug 31 Python
Python识别html主要文本框过程解析
Feb 18 Python
Django 解决distinct无法去除重复数据的问题
May 20 Python
Java多线程实现四种方式原理详解
Jun 02 Python
python下载的库包存放路径
Jul 27 Python
Django路由层如何获取正确的url
Jul 15 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
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
php 操作调试的方法
2012/07/12 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
JavaScript+html5 canvas实现图片破碎重组动画特效
2016/02/22 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
详解微信小程序的不同函数调用的几种方法
2019/05/08 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
Python实现一个简单的MySQL类
2015/01/07 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
Django def clean()函数对表单中的数据进行验证操作
2020/07/09 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
New Balance波兰官方商城:始于1906年,百年慢跑品牌
2017/08/15 全球购物
Hotels.com南非:酒店预订
2017/11/02 全球购物
计算机专业个人简短的自我评价
2013/10/23 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
公司的力量观后感
2015/06/05 职场文书
狼牙山五壮士观后感
2015/06/09 职场文书
车间班组长竞聘书
2015/09/15 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
一篇文章搞懂python混乱的切换操作与优雅的推导式
2021/08/23 Python
python基础之模块的导入
2021/10/24 Python
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技