拷贝数据几小时?python63行代码轻松复制500G文件

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

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

说明: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
8 def CopyFiles1(sourceDir, targetDir):
9 #完全连子目录也会复制好,美观
10 global copyFileCounts
11 print(sourceDir )
12 print("%s 当前处理文件夹%s已处理%s 个文件" %(time.strftime(‘%Y-%m-%d %H:%M:%S‘,time.localtime(time.time())), sourceDir,copyFileCounts) )
13 for f in os.listdir(sourceDir):
14 sourceF = os.path.join(sourceDir, f)
15 targetF = os.path.join(targetDir, f)
16
17 if os.path.isfile(sourceF):
18
19 if not os.path.exists(targetDir):
20 os.makedirs(targetDir)
21 copyFileCounts += 1
22
23
24 if not os.path.exists(targetF) or (os.path.exists(targetF) and (os.path.getsize(targetF) != os.path.getsize(sourceF))):
25
26 open(targetF, "wb").write(open(sourceF, "rb").read())
27 print ("%s %s 复制完毕" %(time.strftime(‘%Y-%m-%d %H:%M:%S‘,time.localtime(time.time())), targetF))
28 else:
29 print ("%s %s 已存在,不重复复制" %(time.strftime(‘%Y-%m-%d %H:%M:%S‘,time.localtime(time.time())), targetF))
30
31 if os.path.isdir(sourceF):
32 copyFiles(sourceF, targetF)
33
34 def CopyFiles2(dir):
35 #会将目录下所有文件都复制在一起,速度快,可以筛选文件
36 i=0
37 for root,dir1,filename in os.walk(dir):
38 #print(filename)
39 for index in range(len(filename)):
40 #print(os.path.splitext(filename[index])[1])
41 #if os.path.splitext(filename[index])[1]==‘.‘:#这里注意filename是个元组,splitext方法的时候只能是字符串
42 if 1==1:
43 #i+=1
44 print(‘here‘)
45 root1="D:\\copytest\\result3"
46 old_path = os.path.join(root, filename[index])
47 print(old_path)
48 new_path = os.path.join(root1,filename[index])
49 shutil.copyfile(old_path,new_path)
50
51 #print("总共有",i,"图层文件被复制!")
52
53 if __name__ == "__main__":
54 time_start = time.time()
55 try:
56 import psyco
57 psyco.profile()
58 except ImportError:
59 pass
60 #CopyFiles1(sourceDir,targetDir)
61 CopyFiles2("D:/copytest/datatest")
62 time_end = time.time()
63 print(‘totally cost‘, time_end - time_start)
在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,×××
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容

以上就是本文的全部内容,觉得文章还不错的话不妨收藏起来慢慢看,有任何建议或看法欢迎大家在评论区分享讨论!

原文地址:https://blog.51cto.com/14568144/2444592

时间: 2024-10-09 01:05:35

拷贝数据几小时?python63行代码轻松复制500G文件的相关文章

app分享功能,微信分享代码,几行代码轻松搞定

让你的应用支持分享送积分功能,获得更多社交流量. *通过友推,开发者用几行代码就可以为应用添加分享送积分功能,并提供详尽的统计报表 *除了本身具备的分享功能外,开发者也可将积分功能单独集成在已有分享组件的APP上, 让您的应用更多地通过用户的分享推荐触达新用户,获得更多社交流量. 一.分享组件功能 1.支持微信,QQ,新浪微博,QQ空间,短信,邮件等多家大型社交媒体平台一键分享2.支持积分抽奖活动在线活动创建3.后台多维度数据统计用户分享行为以及其他数据,让您及时做出精准的营销定位策略4.集成简

几行代码轻松实现百度定位和在地图显示指定坐标

MapAndLocate 几行代码实现定位.以及根据经纬度在地图上具体位置.定位采用的是百度定位.地图显示采用的是搜搜地图.为什么这么做,因为结合着两者:定位准确,体积最小. 项目地址: https://github.com/Pluckypan/MapAndLocate 截图 useage 第一步:在AndroidManifest.xml文件中分别填写 在 百度定位开放平台申请的API_KEY 以及在腾讯搜搜地图开放平台申请的KEY <!-- 百度定位 --> <meta-data an

PowerShell:30行代码轻松实现SQL Server数据库容量监控

本文介绍如何用PowerShell脚本实现SQL Server数据库容量监控 闲话就不多说,直入主题 一.建表 为每台服务器创建一个表,用于记录服务器各个数据库的容量,以服务器名作为表名. CREATE TABLE table_name( [LOG_DATE] [varchar](20) NULL, [DB_NAME] [varchar](50) NULL, [TOTAL_SIZE_MB] [numeric](15, 2) NULL, [USE_SIZE_MB] [numeric](15, 2)

几行代码轻松搞定python的sqlite3的存取

很简单: 存数据: 1.加载sqlite3驱动(只需一行代码) 2.用驱动执行查询语句(只需一行代码) 取数据: 1.加载sqlite3驱动(只需一行代码) 2.用驱动执行查询语句(只需一行代码) 乍一看,sqlite存取数据方式似乎都一样,实际上,就是一样,废话不多说 上例子: 1.存以下内容: s=['Alice','Joker','张三','王五'] 2.先建立数据库,再在数据库中建一个数据表: conn=sqlite3.connect('SqliteDatebase.db') #建立数据

Winform下的语言国际化,几行代码轻松实现

最近做了一些关于winform的项目,需要用到winform的语言国际化,在初使化的时候用起来非常方便.可以参考一下: 核心逻辑: 预览效果演示: OK,以下是核心代码和操作流程 一,添加LanguageHelper类 using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks;

仅需几行代码 轻松实现ETH代币空投

批量发送以太坊,部署下面的合约,然后往下面的合约打币,就可以分发 ragma solidity ^0.4.21; contract batchTransfer { address[] public myAddresses = [ 0xcD2CAaae37354B7549aC7C526eDC432681821bbb, 0x8948e4b00deb0a5adb909f4dc5789d20d0851d71, 0xce82cf84558add0eff5ecfb3de63ff75df59ace0, 0xa

php几行代码实现CSV格式文件输出

//适用于不需要设置格式简单将数据导出的程序,多多指教...... $str .= 'pro_code'.','.'words'.'\n';//首先写入表格标题栏 foreach($is_error as $key => $value){//循环写入数据 $str .= $value['pro_code'].",".$value['words']."\n"; } $str = iconv('utf-8','gb2312',$str);//防止中文乱码 $fil

10行代码解析krc歌词文件

互联网上,我们常见的歌词格式有 LRC.TRC(天天动听歌词).KRC(KuGou ResourCe,酷狗资源文件)和 QRC(QQ音乐歌词):在影视制作中,人们通常会用其他的卡拉 OK 字幕格式,例如 KSC(KBuilder 卡拉 OK 字幕描述脚本文件) 和 KAJ(Sayatoo 项目文件) 格式. 一.lrc文件实例 lrc意思是lyric [ti:最炫民族风] [ar:凤凰传奇] [by:百度网友] [00:23.25]苍茫的天涯是我的爱 [00:27.16]绵绵的青山脚下花正开 [

JavaScript的8行代码搞定js文件引入问题

单页面的操作,免不了会有各种jsp的嵌套问题,一个操作页面里面可能涉及到几十甚至上百个jsp页面. 平常我们对用到的js文件的引入,都会放到index的header里面.如图: 但是,让我们思考三个问题: 1.当业务需要,用到iframe的时候,那么iframe页面将不能再直接调用index引入的js文件 2.假如我这个项目有100个jsp页面,有一个js文件只有其中一个jsp要使用,我将这个js放到index的header区,每次一加载项目都会加载它,是不是延长了项目加载时间. 3.针对问题二