Download 如何下载部分文件

Download 如何下载部分文件,download,python-requests,python-3.3,urllib3,Download,Python Requests,Python 3.3,Urllib3,我正在写一个程序,可以在任何地方下载1Gb大小的文件。现在我正在使用requests包下载文件,虽然它可以工作(我认为有时会超时),但速度非常慢。我见过一些使用urllib2的多部分下载示例,但我正在寻找一种使用urllib3或请求的方法,如果该软件包有能力的话。您对请求的关注程度如何 在下文中,描述了以下内容 r = requests.get(url, stream=True) r.raw.read(amount) 但是,更好的方法是: fd = open(filename, 'wb') r

我正在写一个程序,可以在任何地方下载1Gb大小的文件。现在我正在使用requests包下载文件,虽然它可以工作(我认为有时会超时),但速度非常慢。我见过一些使用urllib2的多部分下载示例,但我正在寻找一种使用urllib3或请求的方法,如果该软件包有能力的话。

您对请求的关注程度如何

在下文中,描述了以下内容

r = requests.get(url, stream=True)
r.raw.read(amount)
但是,更好的方法是:

fd = open(filename, 'wb')
r = requests.get(url, stream=True)
for chunk in r.iter_content(amount):
    fd.write(chunk)
fd.close()

(假设您正在将下载的内容保存到文件中。)

这是我现在用来下载文件的方法。而且速度太慢了,我想做的是并行下载部分文件。类似于文件大小为0-200Mb的thread1和200Mb的thread2。对于请求或urllib3,这可能吗?@user1704863您只是在处理它们还是试图保存它们?您可以并行运行多个下载,但我不建议并行下载单个块,也不认为您可以提前开始下载不同的部分,而不会丢失之前的所有内容。这是可能的,但需要您了解HTTP是如何做到这一点的,使用HTTP范围标头,并结合一些Python线程。然后,服务器可能无论如何都不支持它。@Lukasa Ya我想我已经找到了如何使用范围头来实现它。回顾一下请求文档,我错过了关于get headers部分的部分,该部分解决了我的问题,因为服务器确实接受range headersProcess在
r=requests.get(url,stream=True)
上等待的时间太长,但是立即完成了r.iter\u内容(amount):fd.write(chunk)函数中的chunk的
。此代码是预下载文件并拆分它们还是从web下载指定的部分/区块?