Python HTTP下载文件并显示下载进度条功能的实现


Posted in Python onApril 02, 2020

下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条。

其中利用request模块下载文件可以直接下载,不需要使用open方法,例如:

import urllib
import requests.packages.urllib3

requests.packages.urllib3.disable_warnings()

url = "https://raw.githubusercontent.com/racaljk/hosts/master/hosts"
urllib.urlretrieve(url, filename="hosts")

下面的例子是题目中完整的例子,其中注释的部分是进度条的另一种写法,显示当前处理过的行数。

#!/usr/bin/python
# encoding: utf-8
# -*- coding: utf8 -*-
"""
Created by PyCharm.
File:        LinuxBashShellScriptForOps:download_file2.py
User:        Guodong
Create Date:    2016/9/14
Create Time:    9:40
 """
import requests
import progressbar
import requests.packages.urllib3

requests.packages.urllib3.disable_warnings()

url = "https://raw.githubusercontent.com/racaljk/hosts/master/hosts"

response = requests.request("GET", url, stream=True, data=None, headers=None)

save_path = "/tmp/hosts"

total_length = int(response.headers.get("Content-Length"))
with open(save_path, 'wb') as f:
  # widgets = ['Processed: ', progressbar.Counter(), ' lines (', progressbar.Timer(), ')']
  # pbar = progressbar.ProgressBar(widgets=widgets)
  # for chunk in pbar((i for i in response.iter_content(chunk_size=1))):
  #   if chunk:
  #     f.write(chunk)
  #     f.flush()

  widgets = ['Progress: ', progressbar.Percentage(), ' ',
        progressbar.Bar(marker='#', left='[', right=']'),
        ' ', progressbar.ETA(), ' ', progressbar.FileTransferSpeed()]
  pbar = progressbar.ProgressBar(widgets=widgets, maxval=total_length).start()
  for chunk in response.iter_content(chunk_size=1):
    if chunk:
      f.write(chunk)
      f.flush()
    pbar.update(len(chunk) + 1)
  pbar.finish()

运行结果:

Python HTTP下载文件并显示下载进度条功能的实现

到此这篇关于Python HTTP下载文件并显示下载进度条功能的实现的文章就介绍到这了,更多相关python下载文件显示进度条内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中让MySQL查询结果返回字典类型的方法
Aug 22 Python
Python自动登录126邮箱的方法
Jul 10 Python
尝试用最短的Python代码来实现服务器和代理服务器
Jun 23 Python
python如何通过实例方法名字调用方法
Mar 21 Python
python3实现windows下同名进程监控
Jun 21 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
python中for循环变量作用域及用法详解
Nov 05 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
分析Python感知线程状态的解决方案之Event与信号量
Jun 16 Python
Python中的嵌套循环详情
Mar 23 Python
python实现将range()函数生成的数字存储在一个列表中
Apr 02 #Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 #Python
python求前n个阶乘的和实例
Apr 02 #Python
python实现将字符串中的数字提取出来然后求和
Apr 02 #Python
python对指定字符串逆序的6种方法(小结)
Apr 02 #Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 #Python
django中url映射规则和服务端响应顺序的实现
Apr 02 #Python
You might like
一个php作的文本留言本的例子(五)
2006/10/09 PHP
php分页思路以及在ZF中的使用
2012/05/30 PHP
如何写php守护进程(Daemon)
2015/12/30 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
js 操作css实现代码
2009/06/11 Javascript
理解Javascript_09_Function与Object
2010/10/16 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
基于javascript实现全屏漂浮广告
2016/03/31 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
vue使用openlayers实现移动点动画
2020/09/24 Javascript
跟老齐学Python之玩转字符串(2)更新篇
2014/09/28 Python
Python OS模块实例详解
2019/04/15 Python
Python3基础教程之递归函数简单示例
2019/06/07 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
巴西手表购物网站:eclock
2019/03/19 全球购物
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
大学生优秀的自我评价分享
2013/10/22 职场文书
2014年高考决心书
2014/03/11 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
房屋买卖委托书格式范本格式
2014/10/13 职场文书
加强党性修养心得体会
2016/01/21 职场文书
浅谈Golang 嵌套 interface 的赋值问题
2021/04/29 Golang