美文网首页
Python实现带进度条下载文件

Python实现带进度条下载文件

作者: LabVIEW_Python | 来源:发表于2021-05-04 06:53 被阅读0次

    【问题背景】在下载大型文件的时候,若没有下载提示进度条,用户的感受很糟糕
    【解决方式】定义一个进度条下载函数

    import time,os
    import requests
    
    def progressbar(url,path):
        """ 带进度条的下载函数 """
        start = time.time() #下载开始时间
        response = requests.get(url, stream=True) #stream=True必须写上
        size = 0    #初始化已下载大小
        chunk_size = 1024  # 每次下载的数据大小
        content_size = int(response.headers['content-length'])  # 下载文件总大小
        try:
            if response.status_code == 200:   #判断是否响应成功
                print('Start download,[File size]:{size:.2f} MB'.format(size = content_size / chunk_size /1024))   #开始下载,显示下载文件大小
                filepath = path
                with open(filepath,'wb') as file:   #显示进度条
                    for data in response.iter_content(chunk_size = chunk_size):
                        file.write(data)
                        size +=len(data)
                        print('\r'+'[下载进度]:%s%.2f%%' % ('>'*int(size*50/ content_size), float(size / content_size * 100)) ,end=' ')
            end = time.time()   #下载结束时间
            print('Download completed!,times: %.2f秒' % (end - start))  #输出下载用时时间
        except:
            print("Exception occurs in Downloading...")
    

    测试:
    url = 'http://download.tensorflow.org/models/object_detection/tf2/20200711/faster_rcnn_resnet50_v1_640x640_coco17_tpu-8.tar.gz'
    path= 'd:/faster_rcnn_resnet50_v1_640x640_coco17_tpu-8.tar.gz'
    运行代码:

    url = 'http://download.tensorflow.org/models/object_detection/tf2/20200711/faster_rcnn_resnet50_v1_640x640_coco17_tpu-8.tar.gz'
    path= 'd:/faster_rcnn_resnet50_v1_640x640_coco17_tpu-8.tar.gz'
    progressbar(url,path)
    
    

    效果如下图所示:


    带进度条的文件下载

    相关文章

      网友评论

          本文标题:Python实现带进度条下载文件

          本文链接:https://www.haomeiwen.com/subject/htofdltx.html