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常用正则表达式符号浅析
Aug 13 Python
python多线程用法实例详解
Jan 15 Python
Python判断字符串与大小写转换
Jun 08 Python
Python 实现简单的shell sed替换功能(实例讲解)
Sep 29 Python
基于Python中capitalize()与title()的区别详解
Dec 09 Python
django项目搭建与Session使用详解
Oct 10 Python
解决Shell执行python文件,传参空格引起的问题
Oct 30 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
python实现windows倒计时锁屏功能
Jul 30 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
Python定时从Mysql提取数据存入Redis的实现
May 03 Python
详解Python中openpyxl模块基本用法
Feb 23 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和MySql中计算时间差的方法
2011/04/22 PHP
PHP判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
php setcookie函数的参数说明及其用法
2014/04/20 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
完美的js图片轮换效果
2017/02/05 Javascript
JS ES6中setTimeout函数的执行上下文示例
2017/04/27 Javascript
echart简介_动力节点Java学院整理
2017/08/11 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
开源一个微信小程序仪表盘组件过程解析
2019/07/30 Javascript
React实现轮播效果
2020/08/25 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
vue 使用 sortable 实现 el-table 拖拽排序功能
2020/12/26 Vue.js
python中实现k-means聚类算法详解
2017/11/11 Python
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
html5 datalist标签使用示例(自动完成组件)
2014/05/04 HTML / CSS
CK美国官网:Calvin Klein
2016/08/26 全球购物
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
计算机专业职业规划
2014/02/28 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
安全生产月活动总结
2014/05/04 职场文书
学习考察心得体会
2014/09/04 职场文书
学前班语言教学计划
2015/01/20 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书
利用Python第三方库实现预测NBA比赛结果
2021/06/21 Python
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python
Windows 11上手初体验:任务栏和开始菜单等迎来大改
2021/11/21 数码科技
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL