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 相关文章推荐
paramiko模块安装和使用(远程登录服务器)
Jan 27 Python
python实现端口转发器的方法
Mar 13 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
在cmder下安装ipython以及环境的搭建
Oct 19 Python
Pycharm 字体大小调整设置的方法实现
Sep 27 Python
python ubplot使用方法解析
Jan 10 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 Python
python装饰器代码深入讲解
Mar 01 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 Python
Python测试框架pytest高阶用法全面详解
Jun 01 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静态新闻列表自动生成代码
2007/06/14 PHP
php下实现一个阿拉伯数字转中文数字的函数
2008/07/10 PHP
php设计模式  Command(命令模式)
2011/06/17 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
PHP IF ELSE简化/三元一次式的使用
2011/08/22 PHP
PHP url 加密解密函数代码
2011/08/26 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
2012/04/02 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
node+express+ejs制作简单页面上手指南
2014/11/26 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
Python if语句知识点用法总结
2018/06/10 Python
Django用户认证系统 User对象解析
2019/08/02 Python
python用什么编辑器进行项目开发
2020/06/17 Python
python SOCKET编程基础入门
2021/02/27 Python
省级四好少年事迹材料
2014/01/25 职场文书
空气的环保标语
2014/06/12 职场文书
语文教育专业求职信
2014/06/28 职场文书
家庭教育的心得体会
2014/09/01 职场文书
大三学年自我鉴定范文(3篇)
2014/09/28 职场文书
出纳工作检讨书范文
2014/12/27 职场文书
团员自我评价范文
2015/03/10 职场文书
班主任自我评价范文
2015/03/11 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript
MySQL如何使备份得数据保持一致
2022/05/02 MySQL