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回调函数用法实例分析
May 09 Python
深入解析Python中的lambda表达式的用法
Aug 28 Python
Python的requests网络编程包使用教程
Jul 11 Python
python django事务transaction源码分析详解
Mar 17 Python
python简单实例训练(21~30)
Nov 15 Python
浅谈python中requests模块导入的问题
May 18 Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 Python
python中的print()输出
Apr 12 Python
python3.6编写的单元测试示例
Aug 17 Python
Python datetime 格式化 明天,昨天实例
Mar 02 Python
PyQt5事件处理之定时在控件上显示信息的代码
Mar 25 Python
Django nginx配置实现过程详解
Sep 10 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中使用sockets:从新闻组中获取文章
2006/10/09 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
vuex实现购物车功能
2020/06/28 Javascript
[02:42]DOTA2英雄基础教程 杰奇洛
2013/12/23 DOTA
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
[49:21]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第二场 11.05
2020/11/06 DOTA
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
Python基于Tkinter实现的记事本实例
2015/06/17 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
python微信聊天机器人改进版(定时或触发抓取天气预报、励志语录等,向好友推送)
2019/04/25 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
英国网上电器商店:Electricshop
2020/03/15 全球购物
外贸采购员求职的自我评价
2013/11/26 职场文书
大学生活动策划方案
2014/02/10 职场文书
水利公司纪检监察自我鉴定
2014/02/25 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
民政局副局长民主生活会个人整改措施
2014/10/04 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers