设为首页 收藏本站
查看: 538|回复: 0

[经验分享] Python 复制目录下的文件以及文件夹

[复制链接]

尚未签到

发表于 2015-4-26 06:06:13 | 显示全部楼层 |阅读模式
  使用windows的文件夹复制,发现经常在复制一部分文件后,因某些莫名其妙的原因被中断(提示某个文件复制失败,网络被断开,可能是由于网络不稳定),然后就要从头再来,搞了几个小时还没有搞完,烦死
: }! |$ b# J5 k
就想到用python写个脚本来做这个事情:文件已经存在并且大小一致时不重复复制加快处理速度 8 k/ n0 Q) x! L; ]2 n
, g; {, c) e; @# {
代码如下
$ F+ y# t& u& a, T" [+ \2 O
Python代码 7 k& w6 l/ S% |7 L+ S
1.#! /usr/bin/env python   
2.# -*- coding: utf-8 -*-   
3.#@author zcwang3@gmail.com   
4.#@version 2010-09-25 14:57   
5.  ) C" z1 R$ e. V3 O
6.import os   6 h' X5 q# }3 R) D
7.import time   
8.  ) n- m# Y6 Y4 {. R$ B
9.sourceDir = r"\\192.168.3.250\mmtimages"  * U: o# C, q. ?( P$ C; N
10.targetDir = r"D:\mmtimages"  
11.copyFileCounts = 0  5 N; A" p& e8 j/ X
12.  
13.def copyFiles(sourceDir, targetDir):   
14.    global copyFileCounts   2 F$ ?0 S7 u' D: ?8 t+ t8 P
15.    print sourceDir   8 g$ j4 F1 Y; U
16.    print u"%s 当前处理文件夹%s已处理%s 个文件" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), sourceDir,copyFileCounts)   
17.    for f in os.listdir(sourceDir):   $ E7 f, c; m3 l  N# V1 T+ c
18.        sourceF = os.path.join(sourceDir, f)   3 x2 Q, S! n& [9 c: z6 u
19.        targetF = os.path.join(targetDir, f)   * ]1 |  A! W) I- J$ C: D  L
20.                 " @9 O: F# U# {- W% G4 h* M; u
21.        if os.path.isfile(sourceF):   
22.            #创建目录   
23.            if not os.path.exists(targetDir):   6 o1 i5 G! n% n% S8 i7 }7 @" t
24.                os.makedirs(targetDir)   2 v. d+ Y5 r) e! W- t
25.            copyFileCounts += 1  6 t; S* b8 X$ A! m
26.               
27.            #文件不存在,或者存在但是大小不同,覆盖   
28.            if not os.path.exists(targetF) or (os.path.exists(targetF) and (os.path.getsize(targetF) != os.path.getsize(sourceF))):   7 Z6 X$ Z3 K0 W' M
29.                #2进制文件   * l$ _  o- b2 ~" a
30.                open(targetF, "wb").write(open(sourceF, "rb").read())   ; V* `( G! i+ w& |* C  n
31.                print u"%s %s 复制完毕" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), targetF)   
32.            else:   # ~# k1 b! N) [% u
33.                print u"%s %s 已存在,不重复复制" %(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())), targetF)   / H) h# ~! K8 G6 ?; m+ t, F; y
34.           
35.        if os.path.isdir(sourceF):   
36.            copyFiles(sourceF, targetF)   
37.           3 v# W1 c/ ~% @9 D! {
38.if __name__ == "__main__":   5 r) t2 X+ A2 ^5 n  a, E
39.    try:   
40.        import psyco   + Q5 l* N# I) b! D3 ^# m1 X! j( u
41.        psyco.profile()   
42.    except ImportError:   0 [. e+ N0 ]. |* B
43.        pass  & t; o) v& K9 U& y
44.    copyFiles(sourceDir,targetDir)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-60626-1-1.html 上篇帖子: Python数据结构——二叉树的实现 下篇帖子: python多线程编程(8):线程的合并和后台线程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表