我下面的代码使用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)
答案 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.error
和urllib.parse
添加导入,因为它知道导入urllib2
的代码可以需要任何的3 urllib.*
的模块;在转换模块中的其余urllib2
引用之后,仅将导入限制为仅实际需要的导入是不够聪明的。