简单实现多进程文件下载器

import multiprocessing
import os
""""导入模块"""


def copy_file(src_path, des_path, file, queue):
    # 读取源目录中的文件
    src_file = open(os.path.join(src_path, file), "rb")
    # 打开创建目录下的文件
    des_file = open(os.path.join(des_path, file), "wb")
    # 循环读取文件中的内容写入新文件中
    while True:
        file_content = src_file.read(4096)
        if file_content:
            des_file.write(file_content)
        else:
            break
    # 关闭文件
    src_file.close()
    des_file.close()
    queue.put(file)


def main():
    # 获取要备份的源目录
    src_path = input("请输入要备份的源目录")
    # 创建目录用来存放拷贝的文件数据
    des_path = src_path + "[backup]"
    os.mkdir(des_path)
    # 获取源目录中的文件信息,返回的是一个列表
    file_list = os.listdir(src_path)
    # 创建队列用于和子进程传递信息, 括号中指定最大接受数量上限
    queue = multiprocessing.Queue(128)
    # 创建子进程用于拷贝文件内容
    for file in file_list:
        pro = multiprocessing.Process(target=copy_file, args=(src_path, des_path, file, queue))
        pro.start()
    # count用于计数文件的传输进度
    count = 0
    while True:
        file = queue.get()
        count += 1
        print("\r当前进度%% %.2f" % (count/len(file_list)*100), end="")
        if count == len(file_list):
            break

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值