Какую команду использовать вместо urllib.request.urlretrieve? - программирование
Подтвердить что ты не робот

Какую команду использовать вместо urllib.request.urlretrieve?

В настоящее время я пишу сценарий, который загружает файл с URL-адреса

import urllib.request
urllib.request.urlretrieve(my_url, 'my_filename')

Согласно документации, urllib.request.urlretrieve является устаревшим интерфейсом и может устареть, поэтому я хотел бы избежать его, поэтому мне не придется переписывать этот код в ближайшем будущем.

Я не могу найти другой интерфейс, как download(url, filename) в стандартных библиотеках. Если urlretrieve считается устаревшим интерфейсом в Python 3, что является заменой?

4b9b3361

Ответ 1

Устаревшее - это одно, может стать устаревшим в какой-то момент в будущем, это другое.

Если это соответствует вашим потребностям, я продолжаю использовать urlretrieve.

Тем не менее, вы можете обойтись без него:

from urllib.request import urlopen
from shutil import copyfileobj

with urlopen(image['url']) as in_stream, open(p, 'wb') as out_file:
    copyfileobj(in_stream, out_file)

Ответ 2

запросы действительно приятны для этого. Есть несколько зависимостей, хотя для его установки. Вот пример.

import requests
r = requests.get('imgurl')
with open('pic.jpg','wb') as f:
  f.write(r.content)

Ответ 3

Вы можете использовать urllib2; вы, вероятно, должны использовать requests http://docs.python-requests.org/en/latest/

urllib является устаревшим

urllib2 более болезненно использовать

Ответ 4

Я хотел добавить, что это также работало на xml файлах.

Ответ 5

Другое решение без использования shutil и других внешних библиотек, таких как requests.

import urllib.request

image_url = "https://cdn.sstatic.net/Sites/stackoverflow/img/apple-touch-icon.png"
response = urllib.request.urlopen(image_url)
image = response.read()

with open("image.png", "wb") as file:
    file.write(image)