所以,我在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中进行了彻底检查。
答案 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()
来阅读它。
它就像读取普通文件一样(语法除外),可以用非常类似的方式处理。