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 相关文章推荐
利用一个简单的例子窥探CPython内核的运行机制
Mar 30 Python
Python基础语言学习笔记总结(精华)
Nov 14 Python
Python实现PS图像调整颜色梯度效果示例
Jan 25 Python
python线程池threadpool实现篇
Apr 27 Python
python中csv文件的若干读写方法小结
Jul 04 Python
mac下如何将python2.7改为python3
Jul 13 Python
python获取服务器响应cookie的实例
Dec 28 Python
使用Python opencv实现视频与图片的相互转换
Jul 08 Python
pd.DataFrame统计各列数值多少的实例
Dec 05 Python
用python写PDF转换器的实现
Oct 29 Python
python自动生成证件号的方法示例
Jan 14 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 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
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
Google韩国首页图标动画效果
2007/08/26 Javascript
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
JS 获取select(多选下拉)中所选值的示例代码
2013/08/02 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
一个JavaScript防止表单重复提交的实例
2014/10/21 Javascript
javascript数组去重的方法汇总
2015/04/14 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
python实现的jpg格式图片修复代码
2015/04/21 Python
python 系统调用的实例详解
2017/07/11 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
python如何停止递归
2020/09/09 Python
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
自我鉴定范文
2013/11/10 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
高中班级口号
2014/06/09 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
2015教师年度工作总结范文
2015/04/07 职场文书
2016高考寄语集锦
2015/12/04 职场文书
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android
MySQL数据库表约束讲解
2022/06/21 MySQL