推荐阅读

Python 给下载文件显示进度条和下载时间的实现

requets普通方法

下载大型文件时,我们一般都是这样下载的

import requests
url = ""
r = requests.get(url)
with open('1.mp4', 'wb') as f:
    f.write(r.content)

这样下载大型文件时存在一个问题,那就是内存使用量迅速上升,可能会造成电脑卡死。所以我们需要换一个方式进行下载

流下载

我们可以使用文本流进行下载.
requests模块中有一个这样的方法Response.iter_content()
Response响应对象的一个方法

iter_content(chunk_size=1, decode_unicode=False)

在响应数据上进行重做。当stream=True设置在请求上时,这可以避免立即将内容读入内存以获得大响应。块大小是它应该读入内存的字节数。这不一定是每个返回的项目的长度,因为解码可以进行。

chunk_size必须是类型 int 或 None。值为None时会因stream的值而异。stream-True将读取数据的字块大小与接收的区块相同。如果stream=False,则数据将作为单个块返回。

如果decode_unicode设置为真,响应内容将根据使用最佳编码进行解码。

需要在get请求上设置参数stream为True,它不会立即开始下载,当使用iter_content遍历内容或访问内容属性时才开始下载。

代码实现:

url = ""
r = requests.get(url, headers=header, stream=True)
with open('1.mp4', "wb") as f:
        for chunk in r.iter_content(chunk_size=1024):
            if chunk:
                f.write(chunk)

加个进度条模块

# 进度条模块
def progressbar(url,path):
    if not os.path.exists(path):   # 看是否有该文件夹,没有则创建文件夹
         os.mkdir(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 '\name.extension name'  #设置图片name,注:必须加上扩展名
            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:

现原理其实很简单,我们一般下载东西使用的requests.get(url).content的方法下载来的文件是二进制文件,我们只要通过for循环每次下载1024kb,到最后获取文件的总大小,即可完成我们的功能实现了!.

参考文献

https://blog.csdn.net/m0_46778548/article/details/121180585

https://blog.csdn.net/weixin_43347550/article/details/105248223

到此这篇关于使用python下载大型文件的方法显示进度条和下载时间的文章就介绍到这了,更多相关python下载文件显示进度条和下载时间内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

使用python下载大型文件显示进度条和下载时间的操作代码的更多相关文章

  1. JavaScript canvas绘制动态圆环进度条

    这篇文章主要为大家详细介绍了JavaScript canvas绘制动态圆环进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. Android自定义View实现圆形加载进度条

    这篇文章主要为大家详细介绍了Android自定义View实现圆形加载进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. WxPython界面如何用pubsub展示进程工作的进度条

    这篇文章主要介绍了WxPython界面如何用pubsub展示进程工作的进度条,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  4. Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)

    这篇文章主要介绍了Android 进度条 ProgressBar的实现代码 (隐藏、出现、加载进度),代码简单易懂非常不错,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  5. iOS快速实现环形渐变进度条

    之前看到很多环形进度条,看上去很酷,然后就试着学习他们的代码,结果发现实现一个环形进度条一点也不简单。我就在想一个简单的进度条有这么复杂吗?自己摸索后,有一个简单的实现方法。现在分享给大家,有需要的朋友们可以参考借鉴。

  6. JavaScript实现可拖拽的进度条

    这篇文章主要为大家详细介绍了JavaScript实现可拖拽的进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  7. Android实现圆形渐变加载进度条

    这篇文章主要为大家详细介绍了Android实现圆形渐变加载进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  8. jQuery实现的手动拖动控制进度条效果示例【测试可用】

    这篇文章主要介绍了jQuery实现的手动拖动控制进度条效果,涉及jQuery事件响应及页面元素属性动态操作相关实现技巧,需要的朋友可以参考下

  9. 使用python下载大型文件显示进度条和下载时间的操作代码

    大家都知道下载大型文件时存在一个问题,那就是内存使用量迅速上升,可能会造成电脑卡死,所以我们需要换一个方式进行下载,这篇文章主要介绍了使用python下载大型文件的方法显示进度条和下载时间,需要的朋友可以参考下

  10. react-player实现视频播放与自定义进度条效果

    本篇文章通过完整的代码给大家介绍了react-player实现视频播放与自定义进度条效果,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部