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之yield表达式学习
Sep 02 Python
pycharm远程linux开发和调试代码的方法
Jul 17 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
python进阶之自定义可迭代的类
Aug 20 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
python opencv 实现对图像边缘扩充
Jan 19 Python
Python random模块制作简易的四位数验证码
Feb 01 Python
Java ExcutorService优雅关闭方式解析
May 30 Python
使用opencv中匹配点对的坐标提取方式
Jun 04 Python
Python数据相关系数矩阵和热力图轻松实现教程
Jun 16 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
Sep 09 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 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
smarty模板引擎之内建函数用法
2015/03/30 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
php生成word并下载代码实例
2019/03/15 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
vue form 表单提交后刷新页面的方法
2018/09/04 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
如何利用JavaScript编写一个格斗小游戏
2021/01/06 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
Python linecache.getline()读取文件中特定一行的脚本
2008/09/06 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
Python 实现微信防撤回功能
2019/04/29 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
高级Java程序员面试要点
2013/08/02 面试题
新闻专业个人自我评价
2013/09/21 职场文书
关于打架的检讨书
2014/01/17 职场文书
教师师德承诺书
2014/03/26 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
学校团代会开幕词
2016/03/04 职场文书
关于公司年会的开幕词
2016/03/04 职场文书
导游词之包公祠
2019/11/25 职场文书
Python实现灰色关联分析与结果可视化的详细代码
2022/03/25 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python