Python利用递归实现文件的复制

import os
import time
from collections import deque

"""
利用递归实现目录的遍历
@para  sourcePath:原文件目录
@para  targetPath:目标文件目录
"""
def getDirAndCopyFile(sourcePath,targetPath):

    if not os.path.exists(sourcePath):
        return
    if not os.path.exists(targetPath):
        os.makedirs(targetPath)
        
    #遍历文件夹
    for fileName in os.listdir(sourcePath):
        #拼接原文件或者文件夹的绝对路径
        absourcePath = os.path.join(sourcePath, fileName)
        #拼接目标文件或者文件加的绝对路径
        abstargetPath = os.path.join(targetPath, fileName)
        #判断原文件的绝对路径是目录还是文件
        if os.path.isdir(absourcePath):
            #是目录就创建相应的目标目录
            os.makedirs(abstargetPath)
            #递归调用getDirAndCopyFile()函数
            getDirAndCopyFile(absourcePath,abstargetPath)
        #是文件就进行复制
        if os.path.isfile(absourcePath):
            rbf = open(absourcePath,"rb")
            wbf = open(abstargetPath,"wb")
            while True:
                content = rbf.readline(1024*1024)
                if len(content)==0:
                    break
                wbf.write(content)
                wbf.flush()
            rbf.close()
            wbf.close()

if __name__ == '__main__':
    startTime = time.clock()
    sourcePath = r"H:\培训资料"
    targetPath = r"H:\培训资料_备份"
    getDirAndCopyFile(sourcePath,targetPath)
    #时间是用来计算复制总共消耗了多少时间
    endTime = time.clock()
    time_mi = endTime // 60
    time_s = endTime // 1 % 60
    time_ms = ((endTime * 100) // 1) % 100
    print("总用时:%02.0f:%02.0f:%2.0f" % (time_mi, time_s, time_ms))

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值