Python3 使用requests模块显示下载视频并且显示进度

Python
# -*- coding: utf-8 -*- """ @author:songhao @file: c4.py @time: 2017/12/19 """ import os from urllib.request import urlopen import requests from <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/tqdm" title="View all posts in tqdm" target="_blank">tqdm</a></span> import <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/tqdm" title="View all posts in tqdm" target="_blank">tqdm</a></span> def download_from_url(url, dst): """ @param: url to download file @param: dst place to put the file """ file_size = int(urlopen(url).info().get('Content-Length', -1)) """ print(urlopen(url).info()) # output Server: AliyunOSS Date: Tue, 19 Dec 2017 06:55:41 GMT Content-Type: application/octet-stream Content-Length: 29771146 Connection: close x-oss-request-id: 5A38B7EDCE2B804FFB1FD51C Accept-Ranges: bytes ETag: "9AA9C1783224A1536D3F1E222C9C791B-6" Last-Modified: Wed, 15 Nov 2017 10:38:33 GMT x-oss-object-type: Multipart x-oss-hash-crc64ecma: 14897370096125855628 x-oss-storage-class: Standard x-oss-server-time: 4 """ if os.path.exists(dst): first_byte = os.path.getsize(dst) else: first_byte = 0 if first_byte >= file_size: return file_size header = {"Range": "bytes=%s-%s" % (first_byte, file_size)} pbar = <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/tqdm" title="View all posts in tqdm" target="_blank">tqdm</a></span>( total=file_size, initial=first_byte, unit='B', unit_scale=True, desc=url.split('/')[-1]) req = requests.get(url, headers=header, stream=True) with(open(dst, 'ab')) as f: for chunk in req.iter_content(chunk_size=1024): if chunk: f.write(chunk) pbar.update(1024) pbar.close() return file_size if __name__ == '__main__': url = "http://newoss.maiziedu.com/machinelearning/pythonrm/pythonrm5.mp4" download_from_url(url, "./new.mp4")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# -*- coding: utf-8 -*-
"""
@author:songhao
@file: c4.py
@time: 2017/12/19
"""
 
import os
from urllib . request import urlopen
 
import requests
from tqdm import tqdm
 
 
def download_from_url ( url , dst ) :
     """
    @param: url to download file
    @param: dst place to put the file
    """
     file_size = int ( urlopen ( url ) . info ( ) . get ( 'Content-Length' , - 1 ) )
 
     """
    print(urlopen(url).info())
    # output
    Server: AliyunOSS
    Date: Tue, 19 Dec 2017 06:55:41 GMT
    Content-Type: application/octet-stream
    Content-Length: 29771146
    Connection: close
    x-oss-request-id: 5A38B7EDCE2B804FFB1FD51C
    Accept-Ranges: bytes
    ETag: "9AA9C1783224A1536D3F1E222C9C791B-6"
    Last-Modified: Wed, 15 Nov 2017 10:38:33 GMT
    x-oss-object-type: Multipart
    x-oss-hash-crc64ecma: 14897370096125855628
    x-oss-storage-class: Standard
    x-oss-server-time: 4
    """
 
     if os.path . exists ( dst ) :
         first_byte = os.path . getsize ( dst )
     else :
         first_byte = 0
     if first_byte >= file_size :
         return file_size
     header = { "Range" : "bytes=%s-%s" % ( first_byte , file_size ) }
     pbar = tqdm (
         total = file_size , initial = first_byte ,
         unit = 'B' , unit_scale = True , desc = url . split ( '/' ) [ - 1 ] )
     req = requests . get ( url , headers = header , stream = True )
     with ( open ( dst , 'ab' ) ) as f :
         for chunk in req . iter_content ( chunk_size = 1024 ) :
             if chunk :
                 f . write ( chunk )
                 pbar . update ( 1024 )
     pbar . close ( )
     return file_size
 
 
if __name__ == '__main__' :
     url = "http://newoss.maiziedu.com/machinelearning/pythonrm/pythonrm5.mp4"
     download_from_url ( url , "./new.mp4" )

相关文章:

python requests下载mp4格式的文件

r = requests.get(url,stream=True) #记住 一定要是 stream=True r = r…




  • zeropython 微信公众号 5868037 QQ号 5868037@qq.com QQ邮箱
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值