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实现在windows服务中新建进程的方法
Jun 30 Python
Python保存MongoDB上的文件到本地的方法
Mar 16 Python
Python使用redis pool的一种单例实现方式
Apr 16 Python
老生常谈python中的重载
Nov 11 Python
Django重置migrations文件的方法步骤
May 01 Python
如何用Python制作微信好友个性签名词云图
Jun 28 Python
python实现控制COM口的示例
Jul 03 Python
Python类如何定义私有变量
Feb 03 Python
Python 实现加密过的PDF文件转WORD格式
Feb 04 Python
Python基于正则表达式实现计算器功能
Jul 13 Python
如何在Anaconda中打开python自带idle
Sep 21 Python
Python采集壁纸并实现炫轮播
Apr 30 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
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
PHP脚本的10个技巧(7)
2006/10/09 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
在JavaScript的正则表达式中使用exec()方法
2015/06/16 Javascript
AngularJS入门教程之过滤器详解
2016/08/19 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
微信小程序 实例开发总结
2017/04/26 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python中pika模块问题的深入探究
2018/10/13 Python
Python Series从0开始索引的方法
2018/11/06 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
python对文件的操作方法汇总
2020/02/28 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
为什么要有struct关键字
2012/05/08 面试题
node中使用shell脚本的方法步骤
2021/03/23 Javascript
医学护理毕业生自荐信
2013/11/07 职场文书
幼教简历自我评价
2014/01/28 职场文书
《少年王冕》教学反思
2014/04/11 职场文书
2015年社区纪检工作总结
2015/04/21 职场文书
师德培训心得体会2016
2016/01/09 职场文书
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python
css3新特性的应用示例分析
2022/03/16 HTML / CSS
vue使用element-ui按需引入
2022/05/20 Vue.js
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server