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 05 Python
Python实现按当前日期(年、月、日)创建多级目录的方法
Apr 26 Python
Django 跨域请求处理的示例代码
May 02 Python
基于python批量处理dat文件及科学计算方法详解
May 08 Python
浅谈python编译pyc工程--导包问题解决
Mar 20 Python
浅谈Python的条件判断语句if/else语句
Mar 21 Python
python创建属于自己的单词词库 便于背单词
Jul 30 Python
Python实现CNN的多通道输入实例
Jan 17 Python
Python sys模块常用方法解析
Feb 20 Python
tensorflow常用函数API介绍
Apr 19 Python
python Scrapy框架原理解析
Jan 04 Python
Python实现疫情地图可视化
Feb 05 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在各种web服务器的运行模式详解
2013/06/03 PHP
php中spl_autoload详解
2014/10/17 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
2019/10/12 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
Python中类型关系和继承关系实例详解
2015/05/25 Python
Python实现八皇后问题示例代码
2018/12/09 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
python中如何设置代码自动提示
2020/07/15 Python
用python计算文件的MD5值
2020/12/23 Python
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
如何利用find命令查找文件
2015/02/07 面试题
酒店副总岗位职责
2013/12/24 职场文书
政法大学毕业生自荐信范文
2014/01/01 职场文书
学术诚信承诺书
2014/05/26 职场文书
企业文化标语大全
2014/06/10 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
综治工作汇报材料
2014/10/27 职场文书
慈善募捐倡议书
2015/04/27 职场文书
九年级英语教学反思
2016/02/15 职场文书
vue-router中hash模式与history模式的区别
2021/06/23 Vue.js