NameError:未定义名称"urlopen"

app*_*723 3 python import nameerror

好吧这是我的最后一个问题,所以我终于找到一个打印好的api,但是我的问题是我得到错误,如果有人可以为我看这个并告诉我什么是错的那将是伟大的

import urllib
import json

request = urlopen("http://api.exmaple.com/stuff?client_id=someid&client_secret=randomsecret")
response = request.read()
json = json.loads(response)
if json['success']:
     ob = json['response']['ob']
     print ("The current weather in Seattle is %s with a temperature of %d") % (ob['weather'].lower(), ob['tempF'])
else:
     print ("An error occurred: %s") % (json['error']['description'])
request.close()
Run Code Online (Sandbox Code Playgroud)

这是错误

Traceback (most recent call last):
File "thing.py", line 4, in <module>
request = urlopen("http://api.exmaple.com/stuff?client_id=someid&client_secret=randomsecret")
NameError: name 'urlopen' is not defined
Run Code Online (Sandbox Code Playgroud)

Ela*_*zar 14

您没有导入该名称urlopen.

由于您使用的是python3,因此您需要urllib.request:

from urllib.request import urlopen
req = urlopen(...)
Run Code Online (Sandbox Code Playgroud)

或明确提到该request模块

import urllib.request
req = request.urlopen(...)
Run Code Online (Sandbox Code Playgroud)

在python2中,这将是

from urllib import urlopen
Run Code Online (Sandbox Code Playgroud)

或使用urllib.urlopen.


注意:您也覆盖了名称json,这不是一个好主意.