12

所以,我urllib.request在 Python 3 中搞乱了,想知道如何将获取 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

我究竟做错了什么?

注意:我见过这个问题,但它与 Python 2urllib2中的 Python 3 有关。

4

2 回答 2

11

改变

f.write(g)

f.write(g.read())
于 2013-04-06T01:32:28.067 回答
5

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

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()阅读它。

这就像读取一个普通的文件(除了语法)并且可以以非常相似的方式处理。

于 2017-08-21T21:39:57.917 回答