python实现复制大量文件功能

 更新时间:2019年08月31日 11:50:41   作者:WNotSyer  
这篇文章主要为大家详细介绍了python实现复制大量文件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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实现的tcp端口检测操作示例

    Python实现的tcp端口检测操作示例

    这篇文章主要介绍了Python实现的tcp端口检测操作,结合实例形式分析了Python使用socket模块实现tcp端口检测功能的相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • Python中的布尔类型bool

    Python中的布尔类型bool

    这篇文章主要为大家介绍了Python中的布尔类型bool使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • python切片复制列表的知识点详解

    python切片复制列表的知识点详解

    在本篇文章里小编给大家整理的是一篇关于python切片复制列表的知识点相关内容,有兴趣的朋友们可以跟着学习下。
    2021-10-10
  • pytorch 自定义参数不更新方式

    pytorch 自定义参数不更新方式

    今天小编就为大家分享一篇pytorch 自定义参数不更新方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python中处理字符串之isalpha()方法的使用

    Python中处理字符串之isalpha()方法的使用

    这篇文章主要介绍了Python中处理字符串之isalpha()方法的使用,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • Numpy中np.random.rand()和np.random.randn() 用法和区别详解

    Numpy中np.random.rand()和np.random.randn() 用法和区别详解

    这篇文章主要介绍了Numpy中np.random.rand()和np.random.randn() 用法和区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • python中的opencv 图像分割与提取

    python中的opencv 图像分割与提取

    这篇文章主要介绍了python中的opencv 图像分割与提取,图像中将前景对象作为目标图像分割或者提取出来。对背景本身并无兴趣分水岭算法及GrabCut算法对图像进行分割及提取。具体实现过程需要的朋友可以参考下面文章详细介绍
    2022-06-06
  • Python中@property的理解和使用示例

    Python中@property的理解和使用示例

    这篇文章主要介绍了Python中@property的理解和使用,结合实例形式分析了Python中@property的功能、使用方法及相关操作注意事项,需要的朋友可以参考下
    2019-06-06
  • Python中POST调用Restful接口示例

    Python中POST调用Restful接口示例

    这篇文章主要介绍了Python之POST调用Restful接口示例,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • Python给文件夹加解密的实现

    Python给文件夹加解密的实现

    数据泄露已经成为一个严重的问题,为了保护用户和公司的隐私,给文件夹加密已经成为一个必要的步骤,本文主要介绍了Python给文件夹加解密的实现,感兴趣的可以了解一下
    2023-11-11

最新评论