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

2023-01-09  本文已影响0人  Annun

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}个文件')

上一篇下一篇

猜你喜欢

热点阅读