如何在Python 3中使用urllib.request下载文件?

时间:2013-04-06 01:25:28

标签: python http python-3.x urllib

所以,我在Python 3中弄乱了urllib.request,我想知道如何将获取Internet文件的结果写入本地机器上的文件。我试过这个:

g = urllib.request.urlopen('http://media-mcw.cursecdn.com/3/3f/Beta.png')
with open('test.png', 'b+w') as f:
    f.write(g)

但我收到了这个错误:

TypeError: 'HTTPResponse' does not support the buffer interface

我做错了什么?

注意:我看过this question,但它与Python 2的urllib2有关,它在Python 3中进行了彻底检查。

2 个答案:

答案 0 :(得分:8)

更改

f.write(g)

f.write(g.read())

答案 1 :(得分:1)

我认为一种更简单的方法(也可以分为两行)是使用:

import urllib.request
urllib.request.urlretrieve('http://media-mcw.cursecdn.com/3/3f/Beta.png', 'test.png')

至于您使用的方法。当您使用g = urllib.request.urlopen('http://media-mcw.cursecdn.com/3/3f/Beta.png')时,您只是获取文件。您必须使用g.read()g.readlines()g.readline()来阅读它。

它就像读取普通文件一样(语法除外),可以用非常类似的方式处理。