Преобразование кода Python urllib2 для использования модуля urllib - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть следующий код, который запускается с использованием модуля urllib2, но у меня есть требование для обновления до Python 3.x, и это предотвращает использование urllib2.Я знаю, что он разделен на urllib.request и urllib.error, но я изо всех сил пытаюсь преобразовать следующий код, чтобы использовать модуль urllib вместо того, чтобы читать документ и другие соответствующие вопросы.Любая помощь с благодарностью.

  opener = urllib2.build_opener(urllib2.HTTPHandler)
  request = urllib2.Request(url=event['ResponseURL'], data=data)
  request.add_header('Content-Type', '')
  request.get_method = lambda: 'PUT'
  url = opener.open(request)

1 Ответ

0 голосов
/ 01 февраля 2019

Все, что вам нужно сделать, это заменить urllib2 на urllib.request.Вы не используете ничего, что было перенесено в другие urllib.* модули:

import urllib.request

opener = urllib.request.build_opener(urllib.request.HTTPHandler)
request = urllib.request.Request(url=event['ResponseURL'], data=data)
request.add_header('Content-Type', '')
request.get_method = lambda: 'PUT'
url = opener.open(request)

Вы всегда можете запустить 2to3 инструмент командной строки в своем коде Python 2 и посмотреть, чтоизменения это делает;действие по умолчанию - выводить изменения на стандартный вывод в унифицированном разностном формате.

Исправитель urllib затем также добавит импорт для urllib.error и urllib.parse вверху, потому что он знает тот код, который импортировал urllib2 может понадобиться любой из модулей 3 urllib.*;он недостаточно умен, чтобы ограничить импорт только теми, которые действительно необходимы после преобразования остальных ссылок urllib2 в модуле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...