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计算最小优先级队列代码分享
Dec 18 Python
Python中的迭代器漫谈
Feb 03 Python
列举Python中吸引人的一些特性
Apr 09 Python
Python多线程和队列操作实例
Jun 21 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
Feb 17 Python
Python中基础的socket编程实战攻略
Jun 01 Python
python numpy函数中的linspace创建等差数列详解
Oct 13 Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 Python
python getopt模块使用实例解析
Dec 18 Python
python实现引用其他路径包里面的模块
Mar 09 Python
Python之字典对象的几种创建方法
Sep 30 Python
matplotlib交互式数据光标实现(mplcursors)
Jan 13 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
IE 下的只读 innerHTML
2009/08/21 Javascript
javascript cookies 设置、读取、删除实例代码
2010/04/12 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
windows系统下Python环境搭建教程
2017/03/28 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
竞聘演讲稿范文
2014/01/12 职场文书
幼教毕业生自我鉴定
2014/01/12 职场文书
班主任班级寄语大全
2014/04/04 职场文书
开学典礼策划方案
2014/05/28 职场文书
湖南省召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
五年级学生评语大全
2014/12/26 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
简单的辞职信模板
2015/05/12 职场文书
社团招新宣传语
2015/07/13 职场文书
庆祝教师节新闻稿
2015/07/17 职场文书
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript