当前位置: 首页 > 面试题库 >

如何在Python中恢复文件下载?

应安国
2023-03-14
问题内容

我正在使用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()

requests如果可能的话,我宁愿只使用模块来实现这一目标。


问题答案:

如果Web服务器支持范围请求,则可以将Range标头添加到您的请求中:

Range: bytes=StartPos-StopPos

您将收到StartPos和StopPos之间的部分。如果不知道StopPos,请使用:

Range: bytes=StartPos-

因此您的代码将是:

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)


 类似资料:
  • 我正在使用Python3.5请求模块下载一个文件,使用下面的代码,如何使这段代码“自动恢复”从部分下载的文件下载。 如果可能的话,我宁愿只使用模块来实现这一点。

  • 问题内容: 在这段代码中,我尝试恢复下载。目标文件为20MB。但是,当我停止在10mb上下载时,然后遇到麻烦,我得到的文件大小为30MB。似乎它继续写入文件,但不能部分从服务器下载。Wget -c非常适合该文件。如何恢复文件下载? 问题答案: 这不是我的代码,但是可以。

  • 问题内容: 我正在尝试在下载管理器中实现暂停/恢复,我在网上搜索并阅读了几篇文章,并根据它们更改了我的代码,但是恢复似乎无法正常工作,有什么想法吗? 问题答案: 好的问题已解决,这是我的其他想要实现暂停/恢复的用户的代码:

  • 问题内容: 我正在尝试从Yahoo!下载大文件!如果没有在100秒之内完成下载,显然是由(不是我)设置的网站服务器断开下载。该文件足够小,通常可以成功传输。在数据速率很慢并且下载被断开的情况下,是否有办法在断开连接发生的文件偏移处恢复URLConnection?这是代码: 问题答案: 尝试使用“范围”请求标头: 完成此操作后,您可以在给定的位置(例如,在下载数据的长度之前)开始在此处写入新下载的数

  • 我的项目运行正常。我只是做了一次Lint检查,它给了我所有项目的错误。所以我刚刚清理了我的项目。但现在它并没有生成R.java文件。我怎样才能找回它。我试着建造。。但它不起作用

  • 问题内容: 我编写了一个程序,可以从某些服务器下载一些文件。 当前程序正常运行。 但我想为其添加简历支持。 我正在这样做,但结果文件已损坏: 我正在我知道支持简历的服务器上对其进行测试。 我下载了一些字节。(72720) 然后尝试恢复它。 然后,我使用Hex编辑器打开文件,在偏移量72720处,重复第一个字节: 字节0-36:FLV .............«..... onMetaData 字