您的位置:首页 > 编程语言 > Python开发

Python获取下载速度并显示进度条

2017-08-17 20:17 666 查看
#!/usr/bin/python3
# -*- coding:utf-8 -*-

import sys
import time
from urllib import request

'''
urllib.urlretrieve 的回调函数:
def callbackfunc(blocknum, blocksize, totalsize):
@blocknum:  已经下载的数据块
@blocksize: 数据块的大小
@totalsize: 远程文件的大小
'''

def Schedule(blocknum, blocksize, totalsize):
speed = (blocknum * blocksize) / (time.time() - start_time)
# speed_str = " Speed: %.2f" % speed
speed_str = " Speed: %s" % format_size(speed)
recv_size = blocknum * blocksize

# 设置下载进度条
f = sys.stdout
pervent = recv_size / totalsize
percent_str = "%.2f%%" % (pervent * 100)
n = round(pervent * 50)
s = ('#' * n).ljust(50, '-')
f.write(percent_str.ljust(8, ' ') + '[' + s + ']' + speed_str)
f.flush()
# time.sleep(0.1)
f.write('\r')

# 字节bytes转化K\M\G
def format_size(bytes):
try:
bytes = float(bytes)
kb = bytes / 1024
except:
print("传入的字节格式不对")
return "Error"
if kb >= 1024:
M = kb / 1024
if M >= 1024:
G = M / 1024
return "%.3fG" % (G)
else:
return "%.3fM" % (M)
else:
return "%.3fK" % (kb)

if __name__ == '__main__':
# print(format_size(1222222222))
start_time = time.time()
filename = 'test.data'
url = 'http://ip:port/path/speed.test'
request.urlretrieve(url, filename, Schedule)


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: