Как загрузить файл с помощью urllib.запрос в Python 3?
Итак, я путаюсь с urllib.request
в Python 3 и мне интересно, как написать в результате попадания файла в файл на локальной машине. Я попробовал:
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 2 в urllib2
, который был переработан в Python 3.
2 ответов
более простой способ, я думаю (также вы можете сделать это в двух строках), это использовать:
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()
читать это.
это так же, как чтение обычного файла (за исключением синтаксиса), и может рассматриваться очень похожим образом.