Sta*_*ked 14 python python-2.7 python-requests
我使用python 2.7请求模块使用以下代码下载二进制文件,如何使此代码"自动恢复"从部分下载的文件下载.
r = requests.get(self.fileurl, stream=True, verify=False, allow_redirects=True)
if r.status_code == 200:
CHUNK_SIZE = 8192
bytes_read = 0
with open(FileSave, 'wb') as f:
itrcount=1
for chunk in r.iter_content(CHUNK_SIZE):
itrcount=itrcount+1
f.write(chunk)
bytes_read += len(chunk)
total_per = 100 * float(bytes_read)/float(long(audioSize)+long(videoSize))
self.progress_updates.emit('%d\n%s' % (total_per, 'Download Progress : ' + self.size_human(itrcount*CHUNK_SIZE) + '/' + Total_Size))
r.close()
Run Code Online (Sandbox Code Playgroud)
requests
如果可能的话,我宁愿只使用模块来实现这一点.
Pio*_*ski 21
如果Web服务器支持范围请求,则可以将Range标头添加到您的请求中:
Range: bytes=StartPos-StopPos
Run Code Online (Sandbox Code Playgroud)
您将收到StartPos和StopPos之间的部分.如果不知道StopPos只是使用:
Range: bytes=StartPos-
Run Code Online (Sandbox Code Playgroud)
所以你的代码是:
def resume_download(fileurl, resume_byte_pos):
resume_header = {'Range': 'bytes=%d-' % resume_byte_pos}
return requests.get(fileurl, headers=resume_header, stream=True, verify=False, allow_redirects=True)
Run Code Online (Sandbox Code Playgroud)