打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
用python实现复制大量文件

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

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

  1. import os
  2. import time
  3. import shutil
  4. sourceDir = r'D:\copytest\datatest'
  5. targetDir = r'D:\copytest\result'
  6. copyFileCounts = 0
  7. def CopyFiles1(sourceDir, targetDir):
  8. #完全连子目录也会复制好,美观
  9. global copyFileCounts
  10. print(sourceDir )
  11. print('%s 当前处理文件夹%s已处理%s 个文件' %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), sourceDir,copyFileCounts) )
  12. for f in os.listdir(sourceDir):
  13. sourceF = os.path.join(sourceDir, f)
  14. targetF = os.path.join(targetDir, f)
  15. if os.path.isfile(sourceF):
  16. if not os.path.exists(targetDir):
  17. os.makedirs(targetDir)
  18. copyFileCounts += 1
  19. if not os.path.exists(targetF) or (os.path.exists(targetF) and (os.path.getsize(targetF) != os.path.getsize(sourceF))):
  20. open(targetF, 'wb').write(open(sourceF, 'rb').read())
  21. print ('%s %s 复制完毕' %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), targetF))
  22. else:
  23. print ('%s %s 已存在,不重复复制' %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), targetF))
  24. if os.path.isdir(sourceF):
  25. copyFiles(sourceF, targetF)
  26. def CopyFiles2(dir):
  27. #会将目录下所有文件都复制在一起,速度快,可以筛选文件
  28. i=0
  29. for root,dir1,filename in os.walk(dir):
  30. #print(filename)
  31. for index in range(len(filename)):
  32. #print(os.path.splitext(filename[index])[1])
  33. #if os.path.splitext(filename[index])[1]=='.':#这里注意filename是个元组,splitext方法的时候只能是字符串
  34. if 1==1:
  35. #i+=1
  36. print('here')
  37. root1='D:\\copytest\\result3'
  38. old_path = os.path.join(root, filename[index])
  39. print(old_path)
  40. new_path = os.path.join(root1,filename[index])
  41. shutil.copyfile(old_path,new_path)
  42. #print('总共有',i,'图层文件被复制!')
  43. if __name__ == '__main__':
  44. time_start = time.time()
  45. try:
  46. import psyco
  47. psyco.profile()
  48. except ImportError:
  49. pass
  50. #CopyFiles1(sourceDir,targetDir)
  51. CopyFiles2('D:/copytest/datatest')
  52. time_end = time.time()
  53. print('totally cost', time_end - time_start)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
文件目录常用操作的类
增加自动创建插件工程的Python脚本
Python 修改MP3 - 代码分享 - 开源中国社区
python对文件夹的一些操作
当你拥有100台服务器,如何批量为服务器安装浏览器(或者其他文件)小白也能轻松get的小技巧
比较一个文件夹比另一同名文件夹多出哪些文件,并复制出来
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服