使用tqdm实现下载文件进度条

1、获取下载链接

下载链接为:http://fastsoft.onlinedown.net/down/Fcloudmusicsetup2.5.5.197764.exe

2、使用tqdm实现

  • 2.1、从response的headers中获取文件大小,同时注意:get请求中#stream=True参数的作用是仅让响应头被下载,连接保持打开状态
  • 2.2、以wb模式打开文件
  • 2.3、使用注意调用iter_content,一块一块的遍历要下载的内容,搭配stream=True,此时才开始真正的下载

原始代码:模板

import requests
from tqdm import tqdm

def downloadFILE(url,name):
    resp = requests.get(url=url,stream=True)
    #stream=True的作用是仅让响应头被下载,连接保持打开状态,
    content_size = int(resp.headers[‘Content-Length‘])/1024        #确定整个安装包的大小
    with open(name, "wb") as f:
        print "安装包整个大小是:",content_size,‘k,开始下载...‘
        for data in tqdm(iterable=resp.iter_content(1024),total=content_size,unit=‘k‘,desc=name):
    #调用iter_content,一块一块的遍历要下载的内容,搭配stream=True,此时才开始真正的下载
    #iterable:可迭代的进度条 total:总的迭代次数 desc:进度条的前缀
            f.write(data)
        print name + "已经下载完毕!"

if __name__ == ‘__main__‘:
    url = "需要下载的文件的地址"
    name = url.split(‘/‘)[-1]        #截取整个url最后一段即文件名
    downloadFILE(url,name)

优化代码:

 1 from tqdm import tqdm
 2 import time,requests
 3
 4 def downloadFILE(url,name):
 5     resp = requests.get(url=url,stream=True)
 6     content_size = int(resp.headers[‘Content-Length‘])/1024
 7     with open(name, "wb") as f:
 8         print("Pkg total size is:",content_size,‘k,start...‘)
 9         for data in tqdm(iterable=resp.iter_content(1024),total=content_size,unit=‘k‘,desc=name):
10             f.write(data)
11         print(name + "download finished!")
12 if __name__ == ‘__main__‘:
13     url = "http://fastsoft.onlinedown.net/down/Fcloudmusicsetup2.5.5.197764.exe"
14     name = url.split(‘/‘)[-1]
15     downloadFILE(url,name)

效果:在jupyter中

下载的文件:

双击下载的文件:

证明下载的文件没问题!

原文地址:https://www.cnblogs.com/phyger/p/11370923.html

时间: 2024-10-05 06:17:06

使用tqdm实现下载文件进度条的相关文章

recyclerView中多任务下载文件进度条更新的问题

在recyclerview或listview中进行下载时,由于条目复用等原因会导致下载的进度条更新错乱. 你可能觉得条目复用问题我解决过那么多次,加个tag了啥的就解决了不是. 有这个想法说明你没做过下载的处理.因为在下载的过程中,进度条是一直处于更新状态,所以传统的解觉条目复用的方式并不起作用. 解决方式有两种: 1.进度更新时把进度条进度存到bean中.然后在获取进度的循环中同步刷新adapter. 2.进度更新时把进度条进度存到bean中.写一个轮询刷新adapter.

使用 new XMLHttpRequest() 制作下载文件进度条

mui 进度控件使用方法: 检查当前容器(container控件)自身是否包含.mui-progressbar类: 当前容器包含.mui-progressbar类,则以当前容器为目标控件,直接显示进度: 否则,检查当前容器的直接孩子节点是否包含.mui-progressbar类,若存在,则以遍历到的第一个含有.mui-progressbar类的孩子节点为目标控件,显示进度: 若当前容器的直接孩子节点,均不含.mui-progressbar类,则自动创建进度条控件: 如果有多个列表,每个列表在点击

小小一方士 C# Async\Await 之 上传/下载文件进度条实现原理

关于上传下载文件(图片等),涉及到UI进度条的显示,c#中 System.IProgress提供了相应的api. namespace System { // // 摘要: // 定义进度更新的提供程序. // // 类型参数: // T: // 进度更新值的类型.此类型参数是逆变.即可以使用指定的类型或派生程度更低的类型.有关协变和逆变的详细信息,请参阅 泛型中的协变和逆变. public interface IProgress<in T> { // // 摘要: // 报告进度更新. //

赵雅智_android多线程下载带进度条

progressBar说明 在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度.一个进度条也可不确定其进度.在不确定模式下,进度条显示循环动画.这种模式常用于应用程序使用任务的长度是未知的. XML重要属性 android:progressBarStyle:默认进度条样式 android:progressBarStyleHorizontal:水平样式 progressBar重要方法 getMax():返回这个进度条的范围的

C# 下载带进度条代码(普通进度条)

<span style="font-size:14px;"> </span><pre name="code" class="csharp"><span style="font-size:14px;"> /// <summary> /// 下载带进度条代码(普通进度条) /// </summary> /// <param name="URL&

AsyncTask的使用 (二)图片下载,进度条

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.Ht

Ajax上传文件进度条显示

要实现进度条的显示,就要知道两个参数,上传的大小和总文件的大小 html5提供了一个上传过程事件,在上传过程中不断触发,然后用已上传的大 小/总大小,计算上传的百分比,然后用这个百分比控制div框的显示,就可以 实现上传的进度条效果 前端页面 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Ajax上传文件进度条显示

用进度条显示从网络上下载文件进度

/* * 根据上课的案例,利用进度条控件程序进行下载操作.... */public class Aty_HttpDownLoad_ProgressBar extends Activity { private ProgressBar pB; private TextView tv_progress; private static final int DOWNLOADING=1; private static final int DOWNLOAD_SUCCESS=2; private double

AFHTTPSessionManager下载文件 及下载中 进度条处理,进度条处理需要特别注意,要加载NSRunLoop 中

1.下载文件 和进度条处理代码 - (void)timer:(NSTimer *)timer{ // 另一个View中 进度条progress属性赋值 _downloadView.progress = self.pressing; if (self.pressing >= 1.0) { [timer invalidate]; } } -(void)downloadWithUrlString:(NSString *)urlString { //1.创建会话管理者 AFHTTPSessionMana