python 下载视频/文件 实时显示进度

这篇具有很好参考价值的文章主要介绍了python 下载视频/文件 实时显示进度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章转载于: https://blog.csdn.net/knighthood2001/article/details/120624571
为了自己方便学习,所有做个简单的总结。

先直接上代码:

from contextlib import closing
import requests, os

def download_video(download_url, download_path):
    video_name = os.path.basename(download_path)
    with closing(requests.get(download_url, timeout=10, verify=False, stream=True)) as response:
        chunk_size = 1024                                               # 单次请求最大值
        content_size = int(response.headers['content-length'])          # 文件总大小
        data_count = 0                                                  # 当前已传输的大小
        with open(download_path, "wb") as file:
            for data in response.iter_content(chunk_size=chunk_size):
                file.write(data)
                done_block = int((data_count / content_size) * 50)      # 已经下载的文件大小
                data_count = data_count + len(data)                     # 实时进度条进度
                now_jd = (data_count / content_size) * 100              # %% 表示%
                print("\r %s [%s%s] %d%% " % (video_name+"---->", done_block * '█', ' ' * (50 - 1 - done_block), now_jd), end=" ")


if __name__ == '__main__':
    url = "视频地址"
    video_path = "测试.mp4"

    download_video(url, video_path)

解释下:

1.with closing

我们在日常读取文件资源时,经常会用到with open() as f:的句子。

但是使用with语句的时候是需要条件的,任何对象,只要正确实现了上下文管理,就可以使用with语句,实现上下文管理是通过__enter__和__exit__这两个方法实现的。

2.文件流stream

文件流,它就好比你一边抽一边取,不用等池子满了再用,
所以对于一些大型文件(几个G的视频)一般会用到这个参数。(对小型文件也可以使用)

3.response.headers[‘content-length’]

这表示获取文件的总大小,但是它得到的结果的数据类型是str而不是int,因此需要进行数据类型转换。

4.response.iter_content()

该方法一般用于从网上下载文件和网页(需要用到requests.get(url)

其中chunk_size表示单次请求最大值。

5.\r和%

\r表示回车(回到行首)
%是一种占位符
而对于%%,第一个%起到了转义的作用,使结果输出为百分号%

效果如下:

python 下载视频/文件 实时显示进度

python 下载视频/文件 实时显示进度
python 下载视频/文件 实时显示进度文章来源地址https://www.toymoban.com/news/detail-420355.html

到了这里,关于python 下载视频/文件 实时显示进度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包