# -*- 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"
)
|
相关文章: