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数据结构之二叉树的遍历实例
Apr 29 Python
跟老齐学Python之再深点,更懂list
Sep 20 Python
浅谈python socket函数中,send与sendall的区别与使用方法
May 09 Python
简单了解OpenCV是个什么东西
Nov 10 Python
APIStar:一个专为Python3设计的API框架
Sep 26 Python
Python txt文件加入字典并查询的方法
Jan 15 Python
python实现贪吃蛇小游戏
Mar 21 Python
linux下python中文乱码解决方案详解
Aug 28 Python
tensorflow使用指定gpu的方法
Feb 04 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
Mar 13 Python
pandas使用之宽表变窄表的实现
Apr 12 Python
Python 实现Mac 屏幕截图详解
Oct 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
php的计数器程序
2006/10/09 PHP
第十一节--重载
2006/11/16 PHP
微信API接口大全
2015/04/15 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
2015/08/28 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
Bootstrap table的使用方法
2016/11/02 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
HTML5之SVG 2D入门7—SVG元素的重用与引用
2013/01/30 HTML / CSS
英国家居装饰品、户外家具和玻璃器皿购物网站:Rinkit.com
2019/11/04 全球购物
CAD制图设计师自荐信
2014/01/29 职场文书
毕业生自荐书
2014/02/02 职场文书
高中英语教学反思
2014/02/04 职场文书
工作过失检讨书
2014/02/23 职场文书
解除劳动合同协议书
2014/04/14 职场文书
企业职业病防治方案
2014/05/29 职场文书
文明社区申报材料
2014/08/21 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
怎样写家长意见
2015/06/04 职场文书
立春观后感
2015/06/18 职场文书
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python