我有以下使用 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)
您始终可以运行 2to3
command-line tool在你的 Python 2 代码上,看看它做了什么改变;默认操作是以统一差异格式在 stdout 上输出更改。
urllib
修复器还会在顶部为 urllib.error
和 urllib.parse
添加导入,因为它知道该代码导入的 urllib2
可能 需要 3 个 urllib.*
模块中的任何一个;在转换模块中的其余 urllib2
引用后,仅将导入限制为实际需要的导入是不够聪明的。
关于python - 将 urllib2 python 代码转换为使用 urllib 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54479600/