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 translator使用实例
Sep 06 Python
python中os模块详解
Oct 14 Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 Python
AI人工智能 Python实现人机对话
Nov 13 Python
python中列表和元组的区别
Dec 18 Python
用python简单实现mysql数据同步到ElasticSearch的教程
May 30 Python
详解如何用django实现redirect的几种方法总结
Nov 22 Python
如何使用Python多线程测试并发漏洞
Dec 18 Python
python 链接sqlserver 写接口实例
Mar 11 Python
记一次Django响应超慢的解决过程
Sep 17 Python
15个Pythonic的代码示例(值得收藏)
Oct 29 Python
python中xlutils库用法浅析
Dec 29 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的bbs设计(三)
2006/10/09 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
fastclick插件导致日期(input[type="date"])控件无法被触发该如何解决
2015/11/09 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
EsLint入门学习教程
2017/02/17 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
Python 实现购物商城,含有用户入口和商家入口的示例
2017/09/15 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
Python检测网络延迟的代码
2018/05/15 Python
python实现可变变量名方法详解
2019/07/01 Python
Python 旋转打印各种矩形的方法
2019/07/09 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
python爬虫如何解决图片验证码
2021/02/14 Python
法国时尚品牌乐都特瑞士站:La Redoute瑞士
2016/09/05 全球购物
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
英国折扣零售连锁店:QD Stores
2018/12/08 全球购物
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
this关键字的含义
2015/04/08 面试题
介绍一下JMS编程步骤
2015/09/22 面试题
应届毕业生通用的自荐书范文
2014/02/07 职场文书
企业后勤岗位职责
2014/02/28 职场文书
教师师德承诺书
2014/03/26 职场文书
经济类毕业生求职信
2014/06/26 职场文书
英文邀请函
2015/02/02 职场文书
怎样写工作总结啊!
2019/06/18 职场文书
GPU服务器的多用户配置方法
2022/07/07 Servers