Python;urllib 错误:AttributeError: 'bytes'对象没有 'read' 属性
注意:这是Python 3,里面没有urllib2这个模块。另外,我试过用json.loads(),但出现了这个错误:
TypeError: can't use a string pattern on a bytes-like object
如果我用json.loads()并且去掉response里的.read(),就会出现这个错误:
TypeError: expected string or buffer
>
import urllib.request
import json
response = urllib.request.urlopen('http://www.reddit.com/r/all/top/.json').read()
jsonResponse = json.load(response)
for child in jsonResponse['data']['children']:
print (child['data']['title'])
这不管用……我也不知道为什么。
4 个回答
2
我对Python 3还不太熟悉,但看起来urllib.request.urlopen().read()
返回的是一个byte
对象,而不是字符串。
你可以试着把它放进一个StringIO
对象里,或者直接用str(response)
来转换一下。
46
使用 json.loads
而不是 json.load
。
(load
是从一个像文件一样的对象中读取数据,而 loads
是从字符串中读取数据。所以你也可以直接省略 .read()
这个调用。)
107
试试这个:
jsonResponse = json.loads(response.decode('utf-8'))