多进程copy文件

本文介绍了一个使用Python多进程进行文件复制的例子。通过创建进程池来并行复制文件夹内的多个文件,并利用队列来跟踪复制进度。该程序首先让用户输入原始文件夹名称,然后创建一个新的文件夹用于存放复制后的文件。

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

import os
from multiprocessing import Pool,Queue

#copy文件
def copyFile(name,oldFileName,newFileName,queue):
    fr = open(oldFileName+ "/"+name)
    fw = open(newFileName+ "/"+name,"w")

    cen = fr.read()
    fw.write(cen)

    fr.close()
    fw.close()

    queue.put(name)    #队列中添加内容

def main():
    #获取文件名
    oldFileName = input("请输入文件名:")
    #创建新的文件夹
    newFileName = oldFileName + "-附件"
    os.mkdir(newFileName)

    #获取所有文件名字
    fileNames = os.listdir(oldFileName)
    pool = Pool(3)  #创建进程池,3个子进程
    queue = Queue()   #创建队列,括号可指定接收多少个消息
    for name in fileNames:
        pool.apply_async(copyFile,args=(name,oldFileName,newFileName))
    #pool.close()
    #pool.join()
#打印进度
    num = 0
    allnum = len(fileNames)
    while True:
        queue.get()
        num += 1
        copyRate = num/allnum
        print("\rcopy的进度是:%.2f%%"%(copyRate*100),end="")

        if num == allnum:
            break

if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值