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


Posted in Python onJuly 28, 2018

本文实例为大家分享了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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
深入理解Python中装饰器的用法
Jun 28 Python
python实现斐波那契数列的方法示例
Jan 12 Python
Python调用C++程序的方法详解
Jan 24 Python
python算法演练_One Rule 算法(详解)
May 17 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
基于Python实现的微信好友数据分析
Feb 26 Python
python如何通过实例方法名字调用方法
Mar 21 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
使用celery执行Django串行异步任务的方法步骤
Jun 06 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
Jan 10 Python
python matplotlib画盒图、子图解决坐标轴标签重叠的问题
Jan 19 Python
Python面试不修改数组找出重复的数字
May 20 Python
python如何生成网页验证码
Jul 28 #Python
python3利用tcp实现文件夹远程传输
Jul 28 #Python
python使用tornado实现简单爬虫
Jul 28 #Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 #Python
对tensorflow 的模型保存和调用实例讲解
Jul 28 #Python
Python Socket编程之多线程聊天室
Jul 28 #Python
python实现点对点聊天程序
Jul 28 #Python
You might like
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
javascript 计算两个整数的百分比值
2009/12/26 Javascript
用js脚本控制asp.net下treeview的NodeCheck的实现代码
2010/03/02 Javascript
Array.prototype.concat不是通用方法反驳[译]
2012/09/20 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
jquery实现倒计时代码分享
2014/06/13 Javascript
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
JavaScript中eval函数的问题
2016/01/31 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
微信小程序 slot踩坑的解决
2019/04/01 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
Python数据集切分实例
2018/12/08 Python
python-视频分帧&多帧合成视频实例
2019/12/10 Python
详解Python IO口多路复用
2020/06/17 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
英国领先的隐形眼镜在线供应商:Lenstore.co.uk
2019/11/24 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
如何填写个人简历自我评价
2013/12/10 职场文书
《风筝》教学反思
2014/04/10 职场文书
户籍证明格式
2014/09/15 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
小学六一主持词开场白
2015/05/28 职场文书
退休教师追悼词
2015/06/23 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
导游词之湖北武当山
2019/09/23 职场文书
Java集成swagger文档组件
2021/06/28 Java/Android