Python 3 urllib json AttributeError: 'HTTPResponse' object has no attribute 'type'
Python 3 urllib json AttributeError: 'HTTPResponse' object has no attribute 'type'
我正在遍历用于构造具有 JSON 值的 url 的名称列表。我在 Python 3.x 中使用 json 和 urllib 来提取 JSON 值以用作脚本中进程的参数。第一次迭代 everythng 工作正常,但之后我收到类型错误。
import os, sys, json, urllib.request
info1 = r"https://myurl.services"
info2 = r"/FeatureServer/info/itemInfo?f=pjson"
sList = ['servic_a', 'service_b', 'service_c']
for i in sList:
url = '{}{}{}'.format(info1, i, info2)
with urllib.request.urlopen(url) as url:
data = json.loads(url.read().decode())
这第一次有效,但第二次迭代给了我这个:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Program Files\Python\envs\py3\lib\urllib\request.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "C:\Program Files\Python\envs\py3\lib\urllib\request.py", line 517, in open
protocol = req.type
AttributeError: 'HTTPResponse' object has no attribute 'type'
我已经尝试了 data.clear()
和 url.close()
但都没有用。
在第一次迭代中,语句 with urllib.request.urlopen(url) as url:
完全按照您的要求执行,但会用 urllib.request.urlopen(url)
部分的响应覆盖 url
变量。所以在下一次迭代中,url
是 HTTPResponseObject
并且 urllib.request.urlopen()
函数得到它而不是有效的 url.
我正在遍历用于构造具有 JSON 值的 url 的名称列表。我在 Python 3.x 中使用 json 和 urllib 来提取 JSON 值以用作脚本中进程的参数。第一次迭代 everythng 工作正常,但之后我收到类型错误。
import os, sys, json, urllib.request
info1 = r"https://myurl.services"
info2 = r"/FeatureServer/info/itemInfo?f=pjson"
sList = ['servic_a', 'service_b', 'service_c']
for i in sList:
url = '{}{}{}'.format(info1, i, info2)
with urllib.request.urlopen(url) as url:
data = json.loads(url.read().decode())
这第一次有效,但第二次迭代给了我这个:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Program Files\Python\envs\py3\lib\urllib\request.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "C:\Program Files\Python\envs\py3\lib\urllib\request.py", line 517, in open
protocol = req.type
AttributeError: 'HTTPResponse' object has no attribute 'type'
我已经尝试了 data.clear()
和 url.close()
但都没有用。
在第一次迭代中,语句 with urllib.request.urlopen(url) as url:
完全按照您的要求执行,但会用 urllib.request.urlopen(url)
部分的响应覆盖 url
变量。所以在下一次迭代中,url
是 HTTPResponseObject
并且 urllib.request.urlopen()
函数得到它而不是有效的 url.