美文网首页
Python移动或复制文件夹并保持目录结构

Python移动或复制文件夹并保持目录结构

作者: Annun | 来源:发表于2023-01-09 00:25 被阅读0次

    IO错误未处理,使用代码前请仔细看一下注释,避免造成不可挽回的损失

    # 拷贝文件夹并保持目录结构
    
    import shutil
    import os
    
    source = '源文件夹'
    target = '目标文件夹'
    count = 0  # 统计文件数量
    
    
    def moveDir(src, dist):
        global count
    
        # 检查目标文件夹是否存在,不存在创建文件夹
        if (not os.path.exists(dist)):
            os.mkdir(dist)
    
        # 首先遍历当前目录所有文件及文件夹
        filelist = os.listdir(src)
        # 准备循环判断每个元素是否是文件夹还是文件,是文件的话,把名称传入list,是文件夹的话,递归
        for file in filelist:
            # 获取当前文件或文件夹全路径
            currentpath = os.path.join(src, file)
            # 判断是否是文件夹
            if os.path.isdir(currentpath):
                # 继续遍历文件夹
                moveDir(os.path.join(src, file), os.path.join(dist, file))
            else:
                # 移动或复制文件
                count += 1
                (filepath, filename) = os.path.split(currentpath)
                # 拼接目标文件路径
                targetpath = os.path.join(dist, file)
                # 复制文件
                # shutil.copy(currentpath, targetpath)
                # 移动文件
                os.rename(currentpath, targetpath) # shutil.move(scurrentpath, targetpath)
                print(f'\r第{count}文件:{filename} 移动完成', end='')
    
    
    if __name__ == '__main__':
        source = input('请输入需要移动的文件夹:')
        target = input('请输入需要移动到的位置:')
    
        # 开始移动
        print(f'开始移动文件夹!')
        moveDir(source, target)
        # 移动文件后留有空文件夹,需要主动删除
        shutil.rmtree(source, ignore_errors=False, onerror=None)
        print('')
        print(f'文件夹移动完成:{source}->{target},共{count}个文件')
    
    

    相关文章

      网友评论

          本文标题:Python移动或复制文件夹并保持目录结构

          本文链接:https://www.haomeiwen.com/subject/uhjpcdtx.html