我正在使用Eventbrite api搜索某些事件,但在某些时候我尝试使用json.load()尝试从响应中获取一些属性,但在尝试打印events_load时出现此错误。
Traceback (most recent call last):
File "/Users/jo/PycharmProjects/api-eventbrite/api-eventbrite.py", line 21, in <module>
events_load = json.load(events)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/__init__.py", line 265, in load
return loads(fp.read(),
AttributeError: 'EventbriteObject' object has no attribute 'read'
当打印events_dump时,我可以很好地看到json响应的完整结构。
我认为我碰到了python的一些内部,我不知道它是初学者。 有人能指出我对这个错误的一个很好的解释。 我如何理解某个对象的属性和方法是什么?
在代码
下面from eventbrite import Eventbrite
eventbrite = Eventbrite(my_auth_token)
events = eventbrite.get('/events/search/?q=lisboa&categories=102')
# events_dump = json.dumps(events, indent=4)
# print(events_dump)
events_load = json.load(events)
print(events_load)
答案 0 :(得分:2)
我如何理解某个对象的属性和方法是什么?
放置print(dir(eventbrite))
,您将看到Eventbrite
obj中的所有函数和变量。但是我怀疑你并不真正关心那些东西而你想要查看检索到的事件的键/值。你可以这样做:
from eventbrite import Eventbrite
eventbrite = Eventbrite(my_auth_token)
events = eventbrite.get('/events/search/?q=lisboa&categories=102')
for key, val in events.items():
print('{0}:\t{1}'.format(key,val))
有更多方法可以像pprint
这样做,但我会让你弄清楚(我提供了链接)。另外,我建议您开始学习如何使用Python的调试器pdb
来帮助您设置断点并查看值。希望有所帮助。
答案 1 :(得分:1)
你应该包括整个追溯,但我很确定错误发生在这里
events_load = json.load(events)
并且错误表明事件是一个对象(json.load()
将文件作为其参数,这就是为什么错误消息表明它没有.read()
方法。
可能是events
没有很好的印刷表示的情况。在这种情况下,使用
print(json.dumps(events, indent=4))
打印出来的格式很好。