学习总结

list转str: test_str = "".join(test_list) str转list: test_list=list(test_str) 获取链接所对应的文件大小: response header中 Content-Length 代码: info=requests.head(url=url) print(info.headers) length = int(info.headers["Content-Length"]) 文件分段下载: 将文件的数据分为几部分,分别向客户端进行请求并下载,下载完成后将数据进行拼合成完整的文件 步骤: 获取文件大小 将数据分为几部分,最好均分 分别向客户端请求 使用多线程同时下载 拼合数据 以QQ音乐为例(实际不支持): def get_range(Num,length):#分段,Num为段数 ranges = [] offset = int(int(length) / Num) for i in range(Num): if i == (Num - 1): ranges.append((ioffset,int(length))) else: ranges.append((ioffset,(i+1)*offset)) return ranges info=requests.head(url=r,headers=headers) print(info.headers) length = int(info.headers["Content-Length"])#获取文件大小 s=get_range(3,length) def downloadThread(f,start,end): headers = {"Range":'bytes=%s-%s' % (start, end)} res = requests.get(r,headers=headers)#分段请求 f.seek(start)#定位到上一个写入的数据末尾 f.write(res.content)#以二进制方式写入 with open('music2.mp3','wb')as f: thread_list = [] n = 1 for r in s: start, end = r print('starting:%d thread '% n) n += 1 thread =threading.Thread(target=downloadThread,args=(f,start,end))#创建线程 thread.start()#启动线程 thread_list.append(thread)#添加线程 for i in thread_list: i.join()#防止子线程结束前随主线程结束 print('Download Successfully!') 关键:在进行分段下载前,先向服务器请求分段数据,判断是否支持,返回状态码为406则支持,403则不支持

转载于:https://juejin.im/post/5ca0e11be51d452c8229c339

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值