转换 urllib2 python 代码以使用 urllib 模块

Convert urllib2 python code to use urllib module

我有以下使用 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)

您只需将 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)

您可以随时 运行 您的 Python 2 代码上的 2to3 command-line tool 并查看它所做的更改;默认操作是以统一差异格式在 stdout 上输出更改。

urllib 修复器还会在顶部添加 urllib.errorurllib.parse 的导入,因为它知道导入 urllib2 的代码可以 需要 3 个 urllib.* 模块中的任何一个;在转换模块中的其余 urllib2 引用后,仅将导入限制为实际需要的导入是不够聪明的。