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

时间:2019-02-01 12:32:05

标签: python python-3.x urllib2 urllib

我下面的代码使用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 :(得分:1)

您需要做的就是将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 command-line tool在你的Python 2的代码,看看它做什么样的变化;默认操作是以统一的diff格式在stdout上输出更改。

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