Python3 的断点续传(下载)

环境:
python3.6(requests)
win7 64位

断点下载 是由客户端告诉服务器已经下载的大小,然后服务器会将指针移动到相应的position,继续读出,把文件返回给客户端
下列代码只是将一个文件分三次下载,延伸多线程下载与断点下载(获取本地文件大小后,接着下载)

import requests
import time

def downfile(filename,url,start,end):
    header={
        'Range': 'bytes=%d-%d'%(start,end-1)}
    try:
        res=requests.get(url,stream=True, verify=False,headers=header)
    except BaseException as e:
        print(e)
    with open(filename,'ab+') as F:
        F.seek(start)
        F.truncate()#删除当前指针后的内容
        s=start
        for i in res.iter_content(1024):
            F.write(i)
            s=s+len(i)
            #print(s)
            # time.sleep(1)
            print('{:.2%}  \r'.format(s/5590000))

if __name__ == '__main__':

    _url = 'http://xxx/1.txt'
    filesize=5590000//3  #5590000,文件大小
    for i in range(3):
        filename="1.txt"
        flag=downfile(filename,_url,filesize*i,filesize*(i+1))

必须设置:stream=True,也可以根据本地已下载文件大小接着下载。

你可能感兴趣的:(python3)