import requests
import time
def downloadFile(name,url):
headers = {'Proxy-Connection': 'keep-alive'}
r = requests.get(url,stream=True,headers=headers)
length = float(r.headers['Content-length'])
f = open(name,'wb')
count = 0
count_tmp = 0
time1 = time.time()
for chunk in r.iter_content(chunk_size=512):
if chunk:
f.write(chunk) # 写入文件
count += len(chunk) #累加长度
#计算时间 两秒打印一次
if time.time() - time1 > 2:
p = count / length * 100
speed = (count - count_tmp) / 1024 / 1024 / 2
count_tmp = count
print(name + ': ' + formatFloat(p) + '%' + ' Speed: ' + formatFloat(speed) + 'M/S')
time1 = time.time()
f.close()
def formatFloat(num):
return '{:.2f}'.format(num)
if __name__ == '__main__':
downloadFile('360.exe', 'http://down.360safe.com/setup.exe')
输出
bogon:Desktop macname$ python3 test.py
360.exe: 4.82% Speed: 1.98M/S
360.exe: 9.36% Speed: 1.86M/S
360.exe: 13.79% Speed: 1.81M/S
360.exe: 18.15% Speed: 1.79M/S
360.exe: 24.17% Speed: 2.47M/S
360.exe: 29.52% Speed: 2.19M/S
360.exe: 35.41% Speed: 2.41M/S
360.exe: 41.31% Speed: 2.42M/S
360.exe: 46.90% Speed: 2.29M/S
360.exe: 52.36% Speed: 2.24M/S
360.exe: 58.64% Speed: 2.57M/S
360.exe: 64.07% Speed: 2.23M/S
360.exe: 69.33% Speed: 2.16M/S
360.exe: 73.85% Speed: 1.85M/S
360.exe: 79.36% Speed: 2.26M/S
360.exe: 85.48% Speed: 2.51M/S
360.exe: 92.27% Speed: 2.78M/S
360.exe: 97.85% Speed: 2.28M/S
import os
from six.moves import urllib
import sys
DATA_URL = 'http://down.360safe.com/setup.exe'
filename = DATA_URL.split('/')[-1]
def callback(block_num, block_size, total_size):
'''回调函数
@block_num: 已经下载的数据块
@block_size: 数据块的大小
@total_size: 远程文件的大小
'''
sys.stdout.write('\r>> Downloading %s %.1f%%' % (filename,
float(block_num * block_size) / float(total_size) * 100.0))
sys.stdout.flush()
filepath, _ = urllib.request.urlretrieve(DATA_URL, filename, callback)
print()
>> Downloading setup.exe 100.0%