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的Flask框架中实现全文搜索功能
Apr 20 Python
Sanic框架Cookies操作示例
Jul 17 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
Apr 12 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
超实用的 30 段 Python 案例
Oct 10 Python
使用Python函数进行模块化的实现
Nov 15 Python
Python2和Python3中@abstractmethod使用方法
Feb 04 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
高考要来啦!用Python爬取历年高考数据并分析
Jun 03 Python
Python实现PIL图像处理库绘制国际象棋棋盘
Jul 16 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
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
PHP删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
从性能方面考虑PHP下载远程文件的3种方法
2015/12/29 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
document.all还是document.getElementsByName?
2006/07/21 Javascript
Prototype Date对象 学习
2009/07/12 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
angularjs中ng-bind-html的用法总结
2017/05/23 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
antd Upload 文件上传的示例代码
2018/12/14 Javascript
Python生成pdf文件的方法
2014/08/04 Python
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
python进行TCP端口扫描的实现
2018/12/21 Python
对python实现二维函数高次拟合的示例详解
2018/12/29 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
2020/06/28 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
大学军训通讯稿
2014/01/13 职场文书
广告设计应届生求职信
2014/03/01 职场文书
如何利用pygame实现打飞机小游戏
2021/05/30 Python
HTML5中的DOCUMENT.VISIBILITYSTATE属性详解
2023/05/07 HTML / CSS