多进程实现文件夹的拷贝

# -*- coding: utf-8 -*-
# @Time : 2021/7/13 14:50
# @Author : 飞鸟凌
# @File : 08_多进程实现文件夹的复制.py
import os
import multiprocessing

PATH = "C:/Users/feiniaoling/Desktop/"  # 此处可以修改默认寻找路径


def copy(q, folder_name, new_folder_name, file_name):
    try:
        old_fp = open(PATH + folder_name + "/" + file_name, "rb")
    except:
        print("文件读取出错")
    new_fp = open(PATH + new_folder_name + "/" + file_name, "wb")
    while True:
        comment = old_fp.read(1024)
        if not comment:
            break
        new_fp.write(comment)
    old_fp.close()
    new_fp.close()
    q.put(file_name)


def main():
    # 获取要复制的文件夹名称和创建新的文件文件夹
    folder_name = input("Please input the name of copying the folder:")
    new_folder_name = folder_name + "[复件]"
    try:

        os.mkdir(PATH + new_folder_name)
    except Exception as e:
        pass
    # 获取文件夹中所有的文件名称
    file_names = os.listdir(PATH + folder_name)
    # 创建进程池
    pool = multiprocessing.Pool(3)  # 默认设置一次三个进程运行
    # 创建队列
    q = multiprocessing.Manager().Queue()
    # 进行复制
    for file_name in file_names:
        pool.apply_async(copy, args=(q, folder_name, new_folder_name, file_name))
    pool.close()
    file_sum = len(file_names)
    file_count = 0
    while True:
        data = q.get()
        file_count += 1
        print("\r复制进度为%.2f%%" % (file_count * 100 / file_sum), end="", flush=True)
        if file_count == file_sum:
            break


if __name__ == '__main__':
    main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值