Python下载一个文件

我不确定如何做到这一点。 一种方法是:

import urllib.request; urllib.request.urlretrieve('www.example.com/file.tar', 'file.tar') 

另一种方法是:

 import urllib.request; #Set as appropriate userAgent = ....; req = urllib.request.Request('www.example.com/file.tar', headers={'User-Agent' : userAgent}); response = urllib.request.urlopen(req); #Save the file f = open('file.tar', 'wb'); f.write(response.read()); f.close() 

我不确定使用哪种方法。 我将在一个循环中下载许多文件(模式文件名)。 但是,我想能够设置一个用户代理标题。 这并不重要,但我想。

编辑:我忘了提到,我更喜欢第一种方法,但我不知道如何设置urlretrieve用户代理标题。

我正在开始作为评论,到一个答案…

你的第二个例子几乎做了它所需要的,用一个自定义标题创建一个请求对象,然后将结果读入本地文件。

urlretrieve是一个更高级别的功能,所以它只能完成文档所说的内容:将网络资源下载到本地文件,并告诉您文件在哪里。 如果你不喜欢你的第二个例子稍微低一点的方法,你想要更高级的功能,你可以看看使用请求库

正如@jdi所说,你可以使用请求库。 这也在https://docs.python.org/2/library/urllib2.html中提及。 你需要点图书馆,例如

 pip install requests 

我的代码如下所示:

 import requests def download_file(url): file = requests.get(url) return file.text 

这不容易。