Python递归拷贝文件夹下所有目录和文件

定义函数如下:

def copydirs(from_file, to_file):
    if not os.path.exists(to_file):  # 如不存在目标目录则创建
        os.makedirs(to_file)
    files = os.listdir(from_file)  # 获取文件夹中文件和目录列表
    for f in files:
        if os.path.isdir(from_file + '/' + f):  # 判断是否是文件夹
            copydirs(from_file + '/' + f, to_file + '/' + f)  # 递归调用本函数
        else:
            shutil.copy(from_file + '/' + f, to_file + '/' + f)  # 拷贝文件

使用方法:

if __name__ == '__main__':
    from_file = "C:/Users/Administrator/Desktop/test"
    to_file = "C:/Users/Administrator/Desktop/test1"
    copydirs(from_file, to_file)

递归拷贝后,目录下所有的分支与文件均拷贝到新文件夹中了。

在此情况下,可以执行对文件名、文件类型等进行判断,判断是否进行拷贝等情况。

如果想直接拷贝不做其它操作,可使用 shutil.copytree 函数。

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是 Python 实现拷贝文件夹并打印进度百分比值的示例代码: ```python import shutil import os def copy_folder(src, dst): # 获取源文件夹中的所有文件文件夹 items = os.listdir(src) # 遍历所有文件文件夹 for item in items: # 拼接源文件文件夹的完整路径 src_path = os.path.join(src, item) # 拼接目标文件文件夹的完整路径 dst_path = os.path.join(dst, item) # 如果是文件夹,则递归拷贝 if os.path.isdir(src_path): os.makedirs(dst_path, exist_ok=True) copy_folder(src_path, dst_path) # 如果是文件,则拷贝并打印进度百分比值 else: shutil.copy2(src_path, dst_path) print(f"拷贝进度:{int(os.path.getsize(dst_path)/os.path.getsize(src_path)*100)}%") ``` 在上面的代码中,`copy_folder` 函数用于拷贝文件夹,其中 `src` 参数为源文件夹路径,`dst` 参数为目标文件夹路径。该函数首先获取源文件夹中的所有文件文件夹,然后逐个遍历并拷贝到目标文件夹中。如果遇到文件夹,则递归调用 `copy_folder` 函数进行拷贝。如果遇到文件,则使用 `shutil.copy2` 函数进行拷贝,并打印拷贝进度百分比值。其中,进度百分比值的计算公式为目标文件的大小除以源文件的大小,再乘以 100。 使用示例: ```python src = "/path/to/source/folder" dst = "/path/to/destination/folder" copy_folder(src, dst) ``` 上面的示例代码将会把 `/path/to/source/folder` 文件夹中的所有内容拷贝到 `/path/to/destination/folder` 文件夹中,并打印拷贝进度百分比值。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值