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

yipeiwu_com6年前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))

以上这篇Python利用递归实现文件的复制方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例

最近正好在寻求一种Python的数据库ORM (Object Relational Mapper),SQLAlchemy (项目主页)这个开源项目进入了我的视线,本来想尝试着使用Djan...

Python Django 添加首页尾页上一页下一页代码实例

Python Django 添加首页尾页上一页下一页代码实例

添加首页和尾页: views.py: from django.shortcuts import render from app01 import models def book_l...

python、java等哪一门编程语言适合人工智能?

python、java等哪一门编程语言适合人工智能?

谷歌的AI击败了一位围棋大师,是一种衡量人工智能突然的快速发展的方式,也揭示了这些技术如何发展而来和将来可以如何发展。 人工智能是一种未来性的技术,目前正在致力于研究自己的一套工具。一...

如何用Python做一个微信机器人自动拉群

如何用Python做一个微信机器人自动拉群

引言 微信群的用户添加逻辑是 —— 当群人数达到100人后,用户无法再通过扫描群二维码加入,只能让用户先添加群内联系人微信,再由联系人把用户拉进来。这样,联系人员的私人微信会添加大量陌...

pandas DataFrame的修改方法(值、列、索引)

对于DataFrame的修改操作其实有很多,不单单是某个部分的值的修改,还有一些索引的修改、列名的修改,类型修改等等。我们仅选取部分进行介绍。 一、值的修改 DataFrame的修改方法...