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不带重复的全排列代码
Aug 13 Python
Python3基础之基本数据类型概述
Aug 13 Python
Python编程中time模块的一些关键用法解析
Jan 19 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
Jun 02 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
Python按钮的响应事件详解
Mar 04 Python
python使用Plotly绘图工具绘制气泡图
Apr 01 Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
Sep 04 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
Apr 10 Python
Django获取model中的字段名和字段的verbose_name方式
May 19 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
BBS(php & mysql)完整版(七)
2006/10/09 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
百度地图API使用方法详解
2015/08/25 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
prototype1.4中文手册
2006/09/22 Javascript
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
JavaScript插件化开发教程 (四)
2015/01/27 Javascript
bootstrap实现图片自动轮播
2016/12/21 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
2020/11/06 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
[01:27:30]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python实现的三层BP神经网络算法示例
2018/02/07 Python
python tkinter窗口最大化的实现
2019/07/15 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
CSS3区域模块region相关编写示例
2015/08/28 HTML / CSS
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
澳大利高级泳装品牌:Bondi Born
2018/05/23 全球购物
2014新年寄语
2014/01/20 职场文书
项目采购员岗位职责
2014/04/15 职场文书
捐书活动总结
2014/05/04 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
销售竞赛活动方案
2014/08/23 职场文书
八年级数学教学反思
2016/02/17 职场文书
超越Nginx的Web服务器caddy优雅用法
2022/06/21 Servers