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发送邮件的实例代码(支持html、图片、附件)
Mar 04 Python
Python抓取京东图书评论数据
Aug 31 Python
Python简单实现子网掩码转换的方法
Apr 13 Python
Python遍历文件夹和读写文件的实现代码
Aug 28 Python
python多进程实现进程间通信实例
Nov 24 Python
python+opencv实现动态物体追踪
Jan 09 Python
利用python在excel里面直接使用sql函数的方法
Feb 08 Python
python实现小球弹跳效果
May 10 Python
利用Pytorch实现简单的线性回归算法
Jan 15 Python
Python PyQt5整理介绍
Apr 01 Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 Python
Python OpenCV实现图像模板匹配详解
Apr 07 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
PHP之数组学习
2011/05/29 PHP
深入php self与$this的详解
2013/06/08 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
javascript dom代码应用 简单的相册[firefox only]
2010/06/12 Javascript
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
jQuery实现自定义事件的方法
2015/04/17 Javascript
jQuery实现Tab菜单滚动切换的方法
2015/09/21 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
js自定义QQ菜单效果
2017/01/10 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
2019/11/21 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
vue实现简单计算商品价格
2020/09/14 Javascript
JavaScript实现网页计算器功能
2020/10/29 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
[05:45]Ti4观战指南(下)
2014/07/07 DOTA
Python实现代码统计工具(终极篇)
2016/07/04 Python
详解Python3中字符串中的数字提取方法
2017/01/14 Python
python中文分词教程之前向最大正向匹配算法详解
2017/11/02 Python
python实现扫描ip地址的小程序
2019/04/16 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
Python几种常见算法汇总
2020/06/02 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
超市后勤自我鉴定
2014/01/17 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
协会周年庆活动方案
2014/08/26 职场文书
家长会欢迎词
2015/01/23 职场文书
奔腾年代观后感
2015/06/09 职场文书
小型婚礼主持词
2015/06/30 职场文书