python 断点续传下载

来源:互联网 发布:机房效果图制作软件 编辑:程序博客网 时间:2024/06/07 11:34

#/usr/bin/env python# coding:utf8import urllib2import os.pathdef download(url,filename):req=urllib2.Request(url)if os.path.exists(filename):#print '%s is exists' %filename.split('\\')[-1]file_Length=int(os.path.getsize(filename))fp=urllib2.urlopen(req)print fp.info()if 'Content-Length' in fp.info():if  file_Length == int(fp.info()['Content-Length']):print '%s is good!' %filename.split('\\')[-1]returnelse:header={'range':'bytes='+str(file_Length)+'-'}req.add_header('range','bytes='+str(file_Length)+'-')fp=urllib2.urlopen(req)print fp.info()try:tfp=open(filename,'ab+')bs=1024*8blocknum=0read=0size=-1urlinfo=fp.info()if 'Content-Length' in urlinfo:print '###################downloading################# 'size = urlinfo['Content-Length']print sizewhile 1:block=fp.read(bs)if block == '':print '%s downloading finished' %filename.split('\\')[-1]breaktfp.write(block)blocknum+=1finally:tfp.close()else:fp=urllib2.urlopen(req)try:tfp=open(filename,'ab+')bs=1024*8blocknum=0read=0size=-1urlinfo=fp.info()if 'Content-Length' in urlinfo:size = urlinfo['Content-Length']print '###################downloading################# 'while 1:block=fp.read(bs)if block == '':print '%s is downloading finished' %filename.split('\\')[-1]breaktfp.write(block)blocknum+=1finally:tfp.close()if __name__ == '__main__':download('http://sw.bos.baidu.com/sw-search-sp/software/6e265f97b831a/WeChat_2.3.0.93.exe', 'weixin.exe')

存在一个问题,当前目录下有同名的要保存的文件时,因为直接追加到文件后面,导致下载的不对

0 0
原创粉丝点击