复制目录: 包含多层子目录
方法: 递归, 深度遍历,广度遍历
深度遍历&广度遍历:
思路:
1.获得源目录子级目录,并设置目标目录的子级路径
1.1在此就创建两个栈(或者队列),将原目录和目标目录分别添加到栈(或者队列)里面,一般用append添加,加在栈的顶部,队列的后部
1.2深度遍历 从栈的顶部取出一个原路径去判断,同时用同样的方式取出目标路径(栈和队列都类似于list,都可以用list实现)
广度遍历 从队列的前面取出一个原路径去判断,同时用同样的方式取出目标路径
2.判断原子级路径是否是文件
2.1如果目标子级文件不存在 或者目标子级文件存在,但是子级大小不一致,则复制
3.判断原子级目录是否是目录
3.1.递归 调用自己,把自己的子级目录当作源文件,复制到目标子级目录
3.2.深度遍历 广度遍历 都将原目录和目标目录添加(append)到栈(队列)的后面'''
# 深度遍历 广度遍历(仅取出来的方式不一样)
# 导入模块
import os, collections
def copyDir(sourcePath,targetPath):
# 传入原目录,和需要复制后的目标目录
# 判断需要复制的目录是否存在,如果不存在就返回
if not os.path.isdir(sourcePath):
return '源目录不存在'
# 创建两个栈,一个用来存放原目录路径,另一个用来存放需要复制的目标目录
sourceStack = collections.deque()