【发布时间】:2016-04-02 00:45:10
【问题描述】:
我的来自 Twython 的程序流数据产生了这个错误:
longitude=data['coordinates'][0]
KeyError: 0
这发生在以下代码中:
class MyStreamer(TwythonStreamer):
def on_success(self, data):
if 'text' in data:
if data['place']!=None:
if 'coordinates' in data and data['coordinates'] is not None:
longitude=data['coordinates'][0]
然后我在经度语句之前插入了print(data['coordinates']) 行,最近一次间歇性地发生此错误,它打印出{'coordinates': [-73.971836, 40.798598], 'type': 'Point'}。虽然有时它会像这样颠倒关键条目的顺序:
{'type': 'Point', 'coordinates': [-73.97189946, 40.79853829]}
然后我添加了print 调用type(data) 和type(data['coordinates']) 并在错误发生时得到dict 作为两者的结果。
我现在也意识到这只是在data['place']!=None 时发生(并且每次都发生)。
所以我现在正在对data['place']、type(data['place']) 和repr(data['place']) 进行打印调用
我还能在这里输入什么来捕获错误/找出发生了什么?
如果有帮助,here 是包含 TwythonStreamer 类定义的 200 行 Python 文件。
【问题讨论】:
-
您的问题到底是什么?您希望您的程序运行这些错误还是要调试它?对于这类问题,我建议使用 try 和 except 子句。
-
@UlfAslak:捕获异常并不能阻止它被抛出。
-
data是什么对象?它看起来像一本字典,但显然它有时不像一本。 (或者,我认为存储为data['coordinates']的类似列表的对象可能不是一个真正的列表。) -
什么是
type(data)和type(data['coordinates'])发生错误时? -
@Rogaliski - 我只是把它们放进去,当错误再次触发时会报告。