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 相关文章推荐
Windows下实现Python2和Python3两个版共存的方法
Jun 12 Python
PYTHON压平嵌套列表的简单实现
Jun 08 Python
python日志记录模块实例及改进
Feb 12 Python
python实现外卖信息管理系统
Jan 11 Python
在python中按照特定顺序访问字典的方法详解
Dec 14 Python
python实现顺时针打印矩阵
Mar 02 Python
Django Rest framework认证组件详细用法
Jul 25 Python
Python hmac模块使用实例解析
Dec 24 Python
python为QT程序添加图标的方法详解
Mar 09 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
Jun 04 Python
python 办公自动化——基于pyqt5和openpyxl统计符合要求的名单
May 25 Python
Python办公自动化PPT批量转换操作
Sep 15 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代码书写习惯优化小结
2013/06/20 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
2018/01/08 Javascript
Nuxt.js开启SSR渲染的教程详解
2018/11/30 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
Vue.extend 登录注册模态框的实现
2020/12/29 Vue.js
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
Windows下搭建python开发环境详细步骤
2020/07/20 Python
基于Python 的进程管理工具supervisor使用指南
2016/09/18 Python
你真的了解Python的random模块吗?
2017/12/12 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
python中的变量如何开辟内存
2018/06/26 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
python Tkinter的图片刷新实例
2019/06/14 Python
Django框架创建项目的方法入门教程
2019/11/04 Python
Python图像读写方法对比
2020/11/16 Python
详解CSS3新增的背景属性
2019/12/25 HTML / CSS
Cocopanda波兰:购买化妆品、护肤品、护发和香水
2020/05/25 全球购物
劳动竞赛活动总结
2014/05/05 职场文书
初中新生军训方案
2014/05/13 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
建筑横幅标语
2014/10/09 职场文书