python多进程实现文件下载传输功能
作者:WangF0 发布时间:2022-06-27 02:22:41
标签:python,文件下载,文件传输
本文实例为大家分享了python多进程实现文件下载传输功能的具体代码,供大家参考,具体内容如下
需求:
实现文件夹拷贝功能(包括文件内的文件),并打印拷贝进度
模块:
os模块
multiprocessing 模块
代码:
import multiprocessing
import os
def 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("文件下载完成")
break
if __name__ == "__main__":
main()
来源:https://blog.csdn.net/wf134/article/details/78546232
0
投稿
猜你喜欢
- DataFrame对象的创建,修改,合并import pandas as pdimport numpy as np创建DataFrame对象
- 算法流程:将图像转换为灰度图像利用Sobel滤波器求出 海森矩阵 (Hessian matrix) :将高斯滤波器分别作用于Ix&s
- 如果你是个赛车手,并且按一下按钮就能够立即更换引擎而不需要把车开到车库里去换,那会是什么感觉呢?MySQL数据库为开发人员所做的就好像是按按
- 最近自己很关注文档的撰写,包括如何制作PPT。因为发现自己在表达想法和观点的时候,从自己的语言到文字都异常的欠缺。常常需要“高人”帮忙翻译。
- 在PHP界谈模板引擎,必不可免的要拿Smarty开刀, 这个无比傻帽的却又带有一点点官方色彩的模板引擎, 如果没有我这样人富有正义感又富有创
- 阅读前:Pro Javascript Techniques翻译连载说明和目录JavaScript的演化是渐进而稳固的。历经过去十年的进程,J
- 序言这次玩次狠得。除了编译器使用yum安装,其他全部手动编译。哼~看似就Nginx、PHP、MySql三个东东,但是它们太尼玛依赖别人了。没
- 废话不多说,实现js登录验证码的功能需要下面两步,具体实现过程如下所示:1.jsvar code="" ; //在全局
- JavaScript组件打包模式js组件通常带着css image ,但这样使用起来可能会有些小麻烦,为了让组件足够的solo,有了把css
- 嵌套模板(Nested Template),其实就是基于另一个模板创建的模板。要创建嵌套模板,首先要保
- HTML在线编辑器相信大家见得多了,有些流行的在线编辑器具有很丰富的功能。但美中不足的是,现有的HTML在线编辑器设置字号大小通常只限于1-
- 在一开始接触PHP接触MYSQL的时候就听不少人说:“MySQL就跑跑一天几十万IP的小站还可以,要是几百万IP就不行了
- MySQL是一个跨平台的开源关系型数据库管理系统,是我们常用的最经济实惠的数据库,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特
- 前言GO语言在WEB开发领域中的使用越来越广泛,Hired 发布的《2019 软件工程师状态》报告中指出,具有 Go 经验的候选人是迄今为止
- 事物绝非十全十美总有强差人意的一面,之前针对浮动分析了其引起文本重影的怪异问题,而作为浮动布局的最佳搭档定位布局也存在一定的缺陷。围绕着定位
- 1:构图图形的层次感图形和元素之间的层次感,可以在干扰视觉的同时,突出自身所想体现的主题,这种表现方式往往是比较直接而且有效的方式。我们所说
- 本文实例讲述了php实现图片转换成ASCII码的方法。分享给大家供大家参考。具体如下:php图片转换成ASCII码,转换后可以直接通过字符串
- 一、Selects检索表中的所有行$users = DB::table('users')->get();foreach
- 在cssrain整理的一个 试题集 中有这么一道题:<SCRIPT LANGUAGE="JavaScript"&g
- <% SoFia_DbName="jiaoyou&qu