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读取word文档的方法
May 09 Python
在Python中操作字符串之startswith()方法的使用
May 20 Python
python实现识别手写数字 python图像识别算法
Mar 23 Python
浅谈Python中重载isinstance继承关系的问题
May 04 Python
对python遍历文件夹中的所有jpg文件的实例详解
Dec 08 Python
PyQt5响应回车事件的方法
Jun 25 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
django自带serializers序列化返回指定字段的方法
Aug 21 Python
Python sqlite3查询操作过程解析
Feb 20 Python
浅谈pytorch中torch.max和F.softmax函数的维度解释
Jun 28 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 Python
Python anaconda安装库命令详解
Oct 16 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边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
2013/07/01 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
javascript 尚未实现错误解决办法
2008/11/27 Javascript
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
详解Axios统一错误处理与后置
2018/09/26 Javascript
浅谈小程序 setData学问多
2019/02/20 Javascript
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
17个Python小技巧分享
2015/01/23 Python
基于Pandas读取csv文件Error的总结
2018/06/15 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
Meli Melo官网:名媛们钟爱的英国奢侈手包品牌
2017/04/17 全球购物
JBL澳大利亚官方商店:扬声器、耳机和音响系统
2018/05/24 全球购物
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
后勤主管工作职责
2013/12/07 职场文书
大专毕业自我鉴定
2014/02/04 职场文书
就业表自我评价分享
2014/02/06 职场文书
公立医院改革实施方案
2014/03/14 职场文书
本科毕业生求职信
2014/06/15 职场文书
员工安全责任书范本
2014/07/24 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
2016年重阳节慰问信
2015/12/01 职场文书
少先队大队委竞选口号
2015/12/25 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
JS代码编译器Monaco使用方法
2021/06/11 Javascript