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判断质数(素数)的简单方法讲解
May 05 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
python 二分查找和快速排序实例详解
Oct 13 Python
python的构建工具setup.py的方法使用示例
Oct 23 Python
python生成二维码的实例详解
Oct 29 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 Python
Python读取数据集并消除数据中的空行方法
Jul 12 Python
python 对给定可迭代集合统计出现频率,并排序的方法
Oct 18 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
Jun 21 Python
keras中的卷积层&池化层的用法
May 22 Python
Python常用类型转换实现代码实例
Jul 28 Python
20行代码教你用python给证件照换底色的方法示例
Feb 05 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
PHP 组件化编程技巧
2009/06/06 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
PHP实现过滤各种HTML标签
2015/05/17 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
PHPStorm+XDebug进行调试图文教程
2016/06/13 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
用javascript获取地址栏参数
2006/12/22 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
2013/09/10 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
2017/03/21 jQuery
快速使用node.js进行web开发详解
2017/04/26 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
2017/07/05 Javascript
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
JS运算符简单用法示例
2020/01/19 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
2020/07/24 Javascript
浅析Python多线程下的变量问题
2015/04/28 Python
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
开源Web应用框架Django图文教程
2017/03/09 Python
Python文件操作基本流程代码实例
2017/12/11 Python
Python WSGI的深入理解
2018/08/01 Python
使用python绘制温度变化雷达图
2019/10/18 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
浅谈CSS3中display属性的Flex布局的方法
2017/08/14 HTML / CSS
机械设计专业应届生求职信
2013/11/21 职场文书
《木笛》教学反思
2014/03/01 职场文书
销售合作意向书范本
2015/05/08 职场文书