2013-10-20 51 views
1

我正在编写一个程序,可以将文件下载到最大1Gb的任何位置。现在我正在使用请求包来下载文件,尽管它有效(我认为它有时超时),但它非常缓慢。我看过一些使用urllib2的多部分下载示例的示例,但我正在寻找一种使用urllib3或请求的方法,如果该程序包有能力的话。如何下载部分文件

回答

7

你仔细看了看请求'documentation

Quickstart documentation下面描述

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

这是我现在用来下载文件的方法。而且速度太慢,我想要做的是同时下载文件的一部分。像thread1 0-200Mb和thread2 200Mb大小的文件。这可能与请求或urllib3? – user1704863

+0

@ user1704863你只是在处理它们,还是你想保存它们?您可以同时运行多个下载,但我不会建议并行下载单个块,也不认为您可以提前下载不同的部分,而不会丢失任何部分。 –

+3

这是可能的,但要求您了解HTTP如何执行此操作,并使用HTTP范围标头并结合一些Python线程。然后服务器可能不会支持它。 – Lukasa