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 变量。所以在下一次迭代中,urlHTTPResponseObject 并且 urllib.request.urlopen() 函数得到它而不是有效的 url.