python 多进程实现文件下载传输

来源:互联网 发布:windows视频录制软件 编辑:程序博客网 时间:2024/06/08 09:11

需求:
实现文件夹拷贝功能(包括文件内的文件),并打印拷贝进度

模块:
利用 os模块
multiprocessing 模块

执行效果图

import multiprocessingimport osdef deal_file(old_dir,new_dir,file_name,queue):    # 打开以存在文件    old_file = open(os.path.join(old_dir,file_name),"rb")    # 创建新文件    new_file = open(os.path.join(new_dir,file_name),"wb")    # 循环将内容写入新文件    while True:        # 单行读取        data = old_file.readline()        # 如果有内容写入否则退出        if data:            new_file.write(data)         else:            break    # 关闭文件    old_file.close()    new_file.close()    # 向队列中添加值用以计数,参数可填任意值    queue.put(file_name)def main():    # 创建用户输入文件的备份    old_dir = input("请输入文件名:")    new_dir = "备份"+old_dir    os.mkdir(new_dir)    # 列出文件夹内的文件列表    file_list = os.listdir(old_dir)    queue = multiprocessing.Queue(128)    for file_name in file_list:        pro = multiprocessing.Process(target=deal_file,args=(old_dir,new_dir,file_name,queue))        # 创建子进程        pro.start()    # 定义变量用以计数    num = 0    while True:        # 取出队列中的值        queue.get()        # 计数器+1        num += 1        # 打印下载进度        print("\r文件已下载%.2f %%" % (num/len(file_list)*100),end="")        # 如果计数等于文件长度提示完成退出        if num == len(file_list):            print("文件下载完成")            breakif __name__ == "__main__":    main()
原创粉丝点击