本文主要是介绍python 使用iter_content实现视频下载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
先看代码
video_url = 'http://v1-default.ixigua.com/4e7d18412a0d03f316e9ec84c47a2938/5dcb87bf/video/tos/cn/tos-cn-v-0064/05d51f7a7af4480e8677f2b22b836fa8/'
# 初始下载大小为0
downsize = 0
rsp = requests.get(video_url, stream=True)
# 获取开始下载前的时间戳
startTime = time.time()
with open('2.mp4', 'wb') as f:# 边下载边存硬盘, 10000 单位为B 该数字由自己设置 可以自由调整为可以适合的用例的数字for i in rsp.iter_content(100000):if i:f.write(i)downsize += len(i)line = 'downloading %d KB/s - %.2f MB, 共 %.2f MB'line = line % (downsize / 1024 /(time.time() - startTime) , downsize / 1024 / 1024, downsize / 1024 / 1024)print(line)
print('下载完成')
效果图:看右下角,打印了1455行,挺麻烦的
代码里改成:
print(line, end='\r')
就会打印一行消失一行。
我们看到打印日志:138.09MB 138.19MB 138.28MB
这其实取决于:rsp.iter_content(100000)
设置的值为10000,单位为B,换成MB也就是0.1不到,因为它是1024进制的。
如果该值过小,还会引起报错:
ZeroDivisionError: float division by zero
这是因为,两个时间戳之间差距太小,导致相减为0,引起的除零报错。
这篇关于python 使用iter_content实现视频下载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!