Python Glossary English

все Python 3до 3.14Удалено из стандартной библиотекипонятие

urllib.request.URLopener

удалено

Старый класс для открытия и скачивания адресов. Удалён в Python 3.14 — используйте urlopen() и urlretrieve().

Синтаксис

urllib.request.URLopener().open(url)  # до 3.14

URLopener пришёл из модуля urllib второго Python: объект с методами open() и retrieve(), который сам разбирал схемы http, ftp, file и data. Его убрали, потому что с Python 3 тот же путь проходит через систему обработчиков urllib.request, а старый класс не получал ни исправлений, ни настроек. Как переписать: opener.open(url) меняется на urllib.request.urlopen(url), лучше внутри with; opener.retrieve(url, filename) — на urllib.request.urlretrieve(url, filename); заголовки и прокси задаются через build_opener().

Примеры

# Python 3.14+
import urllib.request
try:
    urllib.request.URLopener
except AttributeError as e:
    print(type(e).__name__)  # → AttributeError
# Python 3.14+
from pathlib import Path
from urllib.request import urlopen, urlretrieve
Path('note.txt').write_text('hello')
url = Path('note.txt').resolve().as_uri()
with urlopen(url) as resp:
    print(resp.read())  # → b'hello'
path, headers = urlretrieve(url, 'copy.txt')
print(Path(path).read_text())  # → hello
from pathlib import Path
from urllib.request import URLopener
Path('note.txt').write_text('hello')
url = Path('note.txt').resolve().as_uri()
opener = URLopener()
print(opener.open(url).read())  # → b'hello'
path, headers = opener.retrieve(url, 'copy.txt')
print(Path(path).read_text())  # → hello

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности