Python 文件夹 copy器(多进程版)

本文介绍了一种使用Python多进程技术实现文件夹中多个文件快速复制的方法。通过创建进程池和队列,可以并行复制文件,提高了文件复制效率。文章提供了详细的代码实现,包括如何读取源文件夹中的文件,创建目标文件夹,以及如何利用多进程进行文件复制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用 Python 多进程 简单实现 文件夹中多个文件的复制


 代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import multiprocessing
import os
import time


def copy_file(q, file_name, old_folder_name, new_folder_name):
    """完成文件的复制"""
    # print('正在完成从%s到%s的复制' % (old_folder_name, new_folder_name))
    old_f = open(old_folder_name + '/' + file_name, 'rb')
    content = old_f.read()
    old_f.close()

    new_f = open(new_folder_name + '/' + file_name, 'wb')
    new_f.write(content)
    new_f.close()
    q.put(file_name)

def main():
    # 获取用户要copy的文件夹的名字
    old_folder_name = input('请输入要copy的文件夹的名字:')
    # 创建一个新的文件夹
    try:
        new_folder_name = old_folder_name + '[复件]'
        os.mkdir(new_folder_name)
    except:
        pass
    # 获取文件夹中所有的文件的名字 listdir()
    file_names = os.listdir(old_folder_name)
    # print(file_names)
    # 创建进程池, 最大进程数为5
    po = multiprocessing.Pool(5)

    # 创建一个队列
    q = multiprocessing.Manager().Queue()

    # 向进程池中添加 copy文件的任务
    for file_name in file_names:
        po.apply_async(copy_file, args=(q, file_name, old_folder_name, new_folder_name))

    # 复制原文件夹中的文件到新文件夹的文件中
    po.close()
    # po.join()

    # 以下为:下载过程添加进度条
    # 返回所有文件的数量
    all_file_num = len(file_names)
    copy_file_num = 0
    while True:
        # file_name = q.get()
        # print("已经完成copy:%s" % file_name)
        copy_file_num += 1
        time.sleep(1)   # 由于文件太小, 模拟感受一下进度条的效果
        print('\r当前拷贝的进度为:{:.2%}'.format(copy_file_num / all_file_num), end='')
        if copy_file_num >= all_file_num:
            break


if __name__ == '__main__':
    main()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值