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之有容乃大的list(1)
Sep 14 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 Python
Python机器学习之SVM支持向量机
Dec 27 Python
对Python中9种生成新对象的方法总结
May 23 Python
Python OpenCV读取png图像转成jpg图像存储的方法
Oct 28 Python
Django跨域请求CSRF的方法示例
Nov 11 Python
Python 实现还原已撤回的微信消息
Jun 18 Python
django Admin文档生成器使用详解
Jul 22 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
Aug 20 Python
python实现统计代码行数的小工具
Sep 19 Python
Django Haystack 全文检索与关键词高亮的实现
Feb 17 Python
聊一聊python常用的编程模块
May 14 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
基于mysql的论坛(7)
2006/10/09 PHP
?繁体转换的class
2006/10/09 PHP
php 地区分类排序算法
2013/07/01 PHP
用PHP实现弹出消息提示框的两种方法
2013/12/17 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
PHP实现微信小程序用户授权的工具类示例
2019/03/05 PHP
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
2011/07/04 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
jQuery实现页面滚动时动态加载内容的方法
2015/03/20 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
Vue.use源码分析
2017/04/22 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
JavaScript编程设计模式之构造器模式实例分析
2017/10/25 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
在Python中等距取出一个数组其中n个数的实现方式
2019/11/27 Python
Python tkinter三种布局实例详解
2020/01/06 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
项目考察欢迎辞
2014/01/17 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
职位说明书范文
2014/05/07 职场文书
个性婚礼策划方案
2014/05/17 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
创业计划书之养殖业
2019/10/11 职场文书
Python包argparse模块常用方法
2021/06/04 Python
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers